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. sprintf()与sscanf()

    1.sprintf() sprintf()用于向字符串中写入格式化的数据,eg: int dSrc1 = 1; int dSrc2 = 2; char str[] = "hello" ...

  2. 轮询、中断、DMA和通道

    from http://blog.csdn.net/lastsweetop/article/details/3418769 一.轮询方式 对I/O设备的程序轮询的方式,是早期的计算机系统对I/O设备的 ...

  3. 微信小程序之跨界面传参

    微信小程序在两个之间传参类似js传递url拼接参数,举个例子来说吧 input自己设置参数 //index.wxml <form bindsubmit="formSubmit" ...

  4. HDMI ip中的时钟 vid_clk与ls_clk

    由TMDS_Bit_clock_Ratio.TMDS_clk和色彩深度,就可以确定出tmds_clk,cdr_clk,vid_clk和ls_clk之间的关系. 1.Tmds_clk时钟频率的确定: 原 ...

  5. VB连接MYSQL数据的方法

    原文链接:http://hanbaohong.iteye.com/blog/704800 第一步:上网http://dev.mysql.com/downloads/connector/odbc/下载m ...

  6. day3用户交互,格式化输出,数据类型,流程控制

    上节课复习: 1.运行python程序的三步骤:python test.py 1.先启动python解释器 2.将test.py的内容当作普通的字符读入内存 3.python解释器解释执行刚刚读入内存 ...

  7. linux 配置阿里云yum库

    备份当前yum库 mv /etc/yum.repos.d /etc/yum.repos.d.backup4comex 新建yum源配置目录 mkdir /etc/yum.repos.d 设置阿里yum ...

  8. Legal or Not HDU

    Legal or Not Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tot ...

  9. Git和SourceTree配合使用

    Git介绍 git是当今最强大的本地的分布式代码版本管理工具. git的核心概念与操作:开发环境,本地仓库,远程仓库.他们的关系如下图: 与CVS及SVN的比较: CVS及SVN都是集中式的版本控制系 ...

  10. ASP.NET MVC Area 区域

    大型网站或项目通常有很多子系统或功能模块,如大型网站可能包含酒店.旅游.机票子系统,通过二级域名来访问,或者一个网站的前台和后台模块,每个团队负责某一子系统或模块,为了各团队进行协同开发,我们可以分不 ...