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. 2018.11.28 poj3294 Life Forms(后缀数组+双指针)

    传送门 后缀数组经典题目. 我们先把所有的字符串都接在一起. 然后求出hththt数组和sasasa数组. 然后对于sasasa数组跑双指针统计答案. 如果双指针包括进去的属于不同字符串的数量达到了题 ...

  2. mysql下载、安装

    一.下载 网上下载地址五花八门,为了防止出现不必要的麻烦,建议直接从官网下载.有几点好处: 1.没有任何其他捆绑的软件 2.版本分布清晰,一般建议选择较新版本    mysql官网下载地址:https ...

  3. C++STL stack

    stack栈 先进后出 stack<int> s ; s.push();//元素入栈 //出栈 while(!s.empty()){ int tmp = s.top(); s.pop(); ...

  4. IntelliJ IDEA 2017版 spring-boot2.0.2 搭建 JPA springboot DataSource JPA环境搭建,JPA实现非字符型设置长度

    1.在github上已有配置环境,如下链接,(需要环境JDK1.8及以上版本,Tomcat1.8及以上版本,搭建maven库,使用编译器IntellJ IDEA) https://github.com ...

  5. linux cp操作,每天学习一点

    指令名称:cp(copy)功能介绍:将一个文件复制至另一个文件,或将数个文件复制至另一目录. 语法格式: cp [options] source dest  cp [options] source.. ...

  6. JavaScript常用定义和方法

    1.字符串一些常用方法,注意,调用这些方法本身不会改变原有字符串的内容,而是返回一个新字符串.toUpperCase()把一个字符串全部变为大写: var s = 'Hello'; s.toUpper ...

  7. oss上传大文件

    最近公司做工程项目,实现文件云存储上传. 网上找了一天,发现网上很多代码都存在相似问题,最后终于找到了一个满足我需求的项目. 工程如下: 这里对项目的文件传输功能做出分析,怎么实现文件上传的,如何进行 ...

  8. JSTL安装与使用

    第一步:下载支持JSTL的文件.jakarta-taglibs-standard-1.1.2.zip 第二步:下载解压后的两个jar文件:standard.jar和jstl.jar文件拷贝到工程的\W ...

  9. Ng第十二课:支持向量机(Support Vector Machines)(一)

    1 目录 支持向量机基本上是最好的有监督学习算法了,从logistic回归出发,引出了SVM,揭示模型间的联系,过渡自然. 2 重新审视logistic回归 Logistic回归目的是从特征学习出一个 ...

  10. 初识Android的ReactiveX

    初识Android的ReactiveX 开发一个复杂一点的Android应用都会用到网络请求,交互和动画.这些都意味着 要写很多的回调嵌套.这样的代码也被称为callback hell(回调地狱).这 ...