1. 基本文件读取

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

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

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

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



2. 文件操作

       2.1 文件复制

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

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

       2.2 文件删除

  1. import os,os.path
  2. filename = 'test.txt'
  3. if os.path.exists(filename): ##判断文件是否存在
  4. os.remove(filename)
  5. else:
  6. print('not exist!')

       2.3 文件重命名

  1. import os
  2. filename = 'test.txt'
  3. rename = 'write.txt'
  4. os.rename(filename,rename)


3. 目录操作

       3.1 目录创建

  1. import os
  2. os.listdir('f:/')
  3. os.mkdir('f:/newdir') ##创建一个新目录
  4. os.mkdirs('f:/newdir1/newdir2') ##创建一个二级目录

       3.2 目录删除

  1. import os
  2. os.rmdir('f:/newdir') ##只能删除空目录
  3. os.removedirs('f:/newdir1/newdir2') ##删除两级目录
  4. shutil.rmtree('f:/newdir') ##可以删除非空目录

       3.3 目录遍历

  1. ###递归法
  2. import os
  3. def visitdir1(path):
  4. for lists in os.listdir(path):
  5. sub_path = os.path.join(path,lists)
  6. print(sub_path)
  7. if os.path.isdir(sub_path):
  8. visitdir(sub_path)
  9. `````````````````````````````````````````````````````````````````````````````````````
  10. ###os.walk法
  11. import os
  12. def visitdir2(path):
  13. list_dirs = os.walk(path) ##返回三元组:路径名,目录列表,文件列表
  14. for root,dirs,files in list_dirs:
  15. for d in dirs:
  16. print(os.path.join(root,d))
  17. for f in files:
  18. 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

       代码

  1. import os
  2. import os.path
  3. import json
  4. import sys
  5. filter = [".wav"] ##设置文件过滤后缀
  6. postfix = '.mfcc' ##题目要求的后缀
  7. dirrname = '/dnn4_added/0_ASR/01_resource/original_speech_data/AISHELL-ASR009-zh-cn-mandarin178/data_aishell/wav'
  8. filename = '/dnn4_added/0_ASR/01_resource/original_speech_data/AISHELL-ASR009-zh-cn-mandarin178/data_aishell/transcript/aishell_transcript_v0.8.txt'
  9. ##目录遍历,把wav文件都找出来
  10. def all_path(dirname):
  11. PATHS = []
  12. for maindir, subdir, file_name_list in os.walk(dirname):
  13. for filename in file_name_list:
  14. apath = os.path.join(maindir,filename)
  15. ext = os.path.splitext(apath)[1]
  16. if ext in filter:
  17. PATHS.append(apath)
  18. return PATHS
  19. PATHS = all_path(dirrname)
  20. ##read txt as dictionary
  21. dict = {}
  22. with open(filename,'r') as file_object:
  23. for line in file_object:
  24. split_list = line.split(' ',1)
  25. split_list[1] = ''.join(split_list[1].split())
  26. dict[split_list[0]] = split_list[1]
  27. ##find key in dictionary and update it
  28. for path in PATHS:
  29. split_dirname = os.path.splitext(path)[0]
  30. split_basename = os.path.basename(split_dirname)
  31. if dict.has_key(split_basename):
  32. split_dirname += postfix
  33. dict[split_dirname] = dict.pop(split_basename)
  34. ##write the new dictionary as txt
  35. keys = list(dict.keys())
  36. values = list(dict.values())
  37. z = list(zip(keys,values))
  38. outputfile = open('dic.txt','w')
  39. for row in z:
  40. rowtext = '{} {}'.format(row[0],row[1])
  41. outputfile.write(rowtext)
  42. outputfile.write('\n')
  43. 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. 2019.01.14 bzoj2648: SJY摆棋子(kd-tree)

    传送门 kd−treekd-treekd−tree模板题. 题意简述:支持在平面上插入一个点,求对于一个点的最近点对. 思路:cdqcdqcdq是一种很不错的分治方法 只是好像码量有点窒息 所以我用了 ...

  2. Apache和nginx 域名配置

    apache配置 一.hosts配置: 1.用编辑器打开hosts文件,位置:C:\Windows\System32\drivers\etc目录下 2.在hosts文件里添加自己的域名配置,配置规则如 ...

  3. Unable to fetch some archives ,maybe run apt-get update or try with --fix-missing?

    今天在liunx下要解压zip包时,发现系统里面没有装unzip包,于是就运行sudo apt-get install unzip,可是总是没办法安装,于是上网找原因,有的说源文件需要修改,于是就运行 ...

  4. Java EE Servlet 几个path

    ContextPath Context ['kɒntekst] 不识庐山真面目,只缘身在此山中. 相对路径 RealPath 绝对路径 ServletPath 就是servlet-mapping 中 ...

  5. 把sublime text打造成python交互终端(windows和Ubuntu)

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7015958.html 把sublime text打造成python交互终端 ...

  6. (转)WAMP多站点配置

    转自:http://wislab.net/archives/43.html Wamp正在被广泛使用,其傻瓜式的安装配置,使得我们可以得心应手地完成以往较为烦琐的服务器环境搭建过程,直接进入到网页程序的 ...

  7. POJ1064--Cable master(Binary Search)

    Description Inhabitants of the Wonderland have decided to hold a regional programming contest. The J ...

  8. Codeforces Round #535 (Div. 3) 1108C - Nice Garland

    #include <bits/stdc++.h> using namespace std; int main() { #ifdef _DEBUG freopen("input.t ...

  9. 第85讲:Scala中For表达式的强大表现力实战

    今天来学一下scala中的For表达式的用法. package scala.learn case class Persons(name:String,isMale:Boolean,children:P ...

  10. ubuntu-12.04.4-alternate-i386安装

    Ubuntu-12.04.4安装 0.网络配置环境: 1. 选择中文简体. 2.选择第一个,安装ubuntu . 3.询问是否安装所选择的语言版本,选择yes. 4.选择“否”默认键盘布局,选择 no ...