1. 基本文件读取

        readline()readlines()write()writelines()

        f.read(size),指定读取文件的字节数,需要注意的是,对于同一个文件,一直调用这个函数,文件指针会一直移动直到文件尾。

        所以如果要中途修改文件指针的位置,那么需要调用seek()函数。常用的是seek(0):移动到文件头;seek(n):移动到文件位置n处;seek(0,n):移动到文件尾。

        f.tell()函数存储文件指针当前的位置



2. 文件操作

       2.1 文件复制

              除了手动编写,也可以使用现成模块

import shutil

shutil.copyfile('1.txt','2.txt')
##复制文件2.txt到1.txt中

       2.2 文件删除

import os,os.path

filename = 'test.txt'
if os.path.exists(filename): ##判断文件是否存在
os.remove(filename)
else:
print('not exist!')

       2.3 文件重命名

import os

filename = 'test.txt'
rename = 'write.txt' os.rename(filename,rename)


3. 目录操作

       3.1 目录创建

import os

os.listdir('f:/')

os.mkdir('f:/newdir')						##创建一个新目录

os.mkdirs('f:/newdir1/newdir2')				##创建一个二级目录

       3.2 目录删除

import os

os.rmdir('f:/newdir')						##只能删除空目录

os.removedirs('f:/newdir1/newdir2')			##删除两级目录

shutil.rmtree('f:/newdir')					##可以删除非空目录

       3.3 目录遍历

###递归法

import os

def visitdir1(path):
for lists in os.listdir(path):
sub_path = os.path.join(path,lists)
print(sub_path)
if os.path.isdir(sub_path):
visitdir(sub_path) ​`````````````````````````````````````````````````````````````````````````````````````
###os.walk法 import os
def visitdir2(path):
list_dirs = os.walk(path) ##返回三元组:路径名,目录列表,文件列表
for root,dirs,files in list_dirs:
for d in dirs:
print(os.path.join(root,d)) for f in files:
print(os.path.join(root,f))


4. 综合应用

       题目

              音频文件的根目录在:/dnn4_added/0_ASR/01_resource/original_speech_data/AISHELL-ASR009-zh-cn-mandarin178/data_aishell/wav

              说话信息在/dnn4_added/0_ASR/01_resource/original_speech_data/AISHELL-ASR009-zh-cn-mandarin178/data_aishell/transcript/aishell_transcript_v0.8.txt

              请得到一个列表文件,文件里面显示音频全路径和说话信息,并把说话信息里的空格都去掉。并且把音频文件的后缀名改成.mfcc

       代码

import os
import os.path
import json
import sys filter = [".wav"] ##设置文件过滤后缀
postfix = '.mfcc' ##题目要求的后缀 dirrname = '/dnn4_added/0_ASR/01_resource/original_speech_data/AISHELL-ASR009-zh-cn-mandarin178/data_aishell/wav'
filename = '/dnn4_added/0_ASR/01_resource/original_speech_data/AISHELL-ASR009-zh-cn-mandarin178/data_aishell/transcript/aishell_transcript_v0.8.txt' ##目录遍历,把wav文件都找出来
def all_path(dirname):
PATHS = []
for maindir, subdir, file_name_list in os.walk(dirname):
for filename in file_name_list:
apath = os.path.join(maindir,filename)
ext = os.path.splitext(apath)[1] if ext in filter:
PATHS.append(apath) return PATHS PATHS = all_path(dirrname) ##read txt as dictionary
dict = {}
with open(filename,'r') as file_object:
for line in file_object:
split_list = line.split(' ',1)
split_list[1] = ''.join(split_list[1].split())
dict[split_list[0]] = split_list[1] ##find key in dictionary and update it
for path in PATHS:
split_dirname = os.path.splitext(path)[0]
split_basename = os.path.basename(split_dirname)
if dict.has_key(split_basename):
split_dirname += postfix
dict[split_dirname] = dict.pop(split_basename) ##write the new dictionary as txt
keys = list(dict.keys())
values = list(dict.values())
z = list(zip(keys,values)) outputfile = open('dic.txt','w')
for row in z:
rowtext = '{} {}'.format(row[0],row[1])
outputfile.write(rowtext)
outputfile.write('\n')
outputfile.close

6_文件IO的更多相关文章

  1. 标准io与文件io

    A: 代码重复: 语句块1: while(判断) { 语句块2: 语句块1: } 上面可以改写为: while(1) { 语句块1: if(判断) break: 语句块2: } B: 标准IO和文件I ...

  2. 文件IO函数和标准IO库的区别

    摘自 http://blog.chinaunix.net/uid-26565142-id-3051729.html 1,文件IO函数,在Unix中,有如下5个:open,read,write,lsee ...

  3. 转 漫谈linux文件IO

    在Linux 开发中,有几个关系到性能的东西,技术人员非常关注:进程,CPU,MEM,网络IO,磁盘IO.本篇文件打算详细全面,深入浅出.剖析文件IO的细节.从多个角度探索如何提高IO性能.本文尽量用 ...

  4. (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  5. Java文件IO操作应该抛弃File拥抱Paths和Files

    Java7中文件IO发生了很大的变化,专门引入了很多新的类: import java.nio.file.DirectoryStream;import java.nio.file.FileSystem; ...

  6. Java 文件IO续

    文件IO续 File类    用来将文件和文件夹封装成对象 方便对文件和文件夹的属性信息进行操作    File对象可以作为参数传递给流的构造函数 Demo1 File的构造方法 public cla ...

  7. Java 文件IO

    文件IO Java IO    IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的对象都在IO包中    按操作数据分为 字节流和字符流        字符流的 ...

  8. 文件IO和标准IO

    2015.2.26 星期四,阴天 今天的内容主要是文件IO man 手册的分册: man -f open 查看那些分册中有openman 1 -- 普通的命令程序man 2 -- 系统调用man 3 ...

  9. 文件IO操作

    前言 本文介绍使用java进行简单的文件IO操作. 操作步骤 - 读文件 1. 定义一个Scanner对象 2. 调用该对象的input函数族进行文件读取 (参见下面代码) 3. 关闭输入流 说明:其 ...

随机推荐

  1. 第1章 Python数据模型

    #<流畅的Python>读书笔记 # 第一部分 序幕 # 第1章 Python数据模型 # 魔术方法(magic method)是特殊方法的昵称.于是乎,特殊方法也叫双下方法(dunder ...

  2. 学以致用十七-----shell脚本之比较数字和字符串及if else

    非常需要注意的是shell脚本对空格要求非常严格, 如: 比较字符串   (不能用于比较字符串) 以上这种写法会报错 因此比较字符串不用 单中括号 [ ] -----------------有误 而是 ...

  3. DDR中寄存器的问题

    图中虚线是自动跳转,实线是通过发送命令才能跳转的. 下面是框中对应的命令. ACT = ACTIVATE MPR = Multipurpose register MRS = Mode register ...

  4. MySQL导入导出表数据

    原文链接:http://blog.163.com/yang_jianli/blog/static/1619900062010111011041228/ 1.这里的导出和mysqldump不同,只是导出 ...

  5. 30条SQL查询优化原则

    在我们平常的SQL查询中,其实我们有许多应该注意的原则,以来实现SQL查询的优化,本文将为大家介绍30条查询优化原则. 首先应注意的原则 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 wher ...

  6. DynamicJson-好用dotnet4的json对象

    最近看的书很杂,也深深被ES6的语法感动了,原来javascript可以这么好用.于是重新学习C#4.5.6,发现有一个dynamic就象是一个javascript对象,好玩!且有人写了一个json到 ...

  7. css3种引入方式,样式与长度颜色,常用样式,css选择器

    # CSS三种引入方式 ## 一.三种方式的书写规范 #### 1.行间式 ```html<div style="width: 100px; height: 100px; backgr ...

  8. 在aliyun遇到一些问题

    1. 删除现有网站报错:“applicationhost.config 错误 无法写入配置文件” 解决办法:用管理员身份打开IIS. 2. IIS上部署MVC网站,打开后500错误:处理程序“Exte ...

  9. VS2008 + QGIS1.7.1试验

    今天试验了一下.结果算是成功了吧.显示Generate done,生成了.但是提示了一个“SVN version不明确”的错误提示,应该无大碍吧.但是打开Build成的.sln也没看出有啥不妥. 用C ...

  10. Java的String类

    String类 String是引用数据类型:字符串是String类的对象 String类的构造方法 共有13种重载方式,这里只示例常用的几个 String():创建一个空字符串 String(Stri ...