python中的IO模块

1.简介

读写文件是常见的IO操作,python内置了读写文本的函数。

读写文件的模式描述如下:

模式描述
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

2.读取文件

文本信息如下:

2.1读取文件的基本信息

1 # 只读方式打开文本文件
2 f = open('./readout.txt', 'r')
3 # 读取文件信息
4 print "文件名: ", f.name
5 print "是否已关闭 : ", f.closed
6 print "访问模式 : ", f.mode
7 print "末尾是否强制加空格 : ", f.softspace
8 # 关闭文件
9 f.close()

2.2一次性读取

1 # 只读方式打开文本文件
2 f = open('./readout.txt', 'r')
3 # 一次性读取全部内容,不安全
4 print '一次性全部读取:
', f.read()
5 f.close()

2.3多次读取

1 # 只读方式打开文本文件
2 f = open('./readout.txt', 'r')
3 # 文件长度
4 # print '文件长度:', len(f.read())
5 # 从文件的开头读取13个字节,超过文本长度则读取全部
6 print '第一次读取:
', f.read(13)
7 # 继续读取4个字节
8 print '第二次读取:
', f.read(4)
9 f.close()

2.4按行读取

1 # 只读方式打开文本文件
2 f = open('./readout.txt', 'r')
3 # 分行读取
4 print '读取第一行:
', f.readline().strip()
5 print '读取第二行的4个字节:
', f.readline(4)
6 f.close()

2.5file作为迭代器

1 # 只读方式打开文本文件
2 f = open('./readout.txt', 'r')
3 for index in range(3):
4     # file自身作为迭代器
5     line = f.next()
6     print line.strip()

2.6按行读取并存为list

 1 # 只读方式打开文本文件
 2 f = open('./readout.txt', 'r')
 3 # 一次性读取所有行并且返回list
 4 fileList = f.readlines()
 5 # ['line one
', 'line two
', 'xe4xb8xadxe6x96x87xe6xb5x8bxe8xafx95']
 6 print 'List列表:
', fileList
 7 for line in fileList:
 8     # #去掉每行头尾空白
 9     print line.strip()
10 f.close()

2.7读取二进制文件

1 # 打开二进制文件,例如图片、视频
2 f = open('./readpicture.jpg', 'rb')
3 print f.read()
4 f.close()

3.写入文件

3.1写入文件的基本信息

1 # 只写方式打开文件,写入文本
2 f = open('./writein.txt', 'w')
3 # 读取文件信息
4 print "文件名: ", f.name
5 print "是否已关闭 : ", f.closed
6 print "访问模式 : ", f.mode
7 print "末尾是否强制加空格 : ", f.softspace
8 # 关闭文件
9 f.close()

3.2多种写入

 1 # 只写方式打开文件,写入文本
 2 f = open('./writein.txt', 'w')
 3 # 写入文本
 4 f.write('line one')
 5 f.close()
 6 
 7 # 只写方式打开文件,以序列方式写入
 8 f = open('./writein.txt', 'w')
 9 contentList = ['line one 
', 'line two 
', '中文测试 
']
10 # 写入序列
11 f.writelines(contentList)
12 f.close()

4.其他函数 file.tell() 、file.seek(offset,[],whence)

 1 # 以读写方式打开文件,以序列方式写入
 2 f = open('./writein.txt', 'w+')
 3 contentList = ['line one 
', 'line two 
', '中文测试 
']
 4 # 写入序列
 5 f.writelines(contentList)
 6 # 指针位置:file.tell()
 7 print '写入后指针所在位置:', f.tell()
 8 # 指针偏移:file.seek(offset[, whence])
 9 # 前者为偏移量,后者为指针位置(默认0表示初始位置,1表示当前位置,2表示末尾位置)
10 f.seek(0)
11 print '偏移后指针所在位置:', f.tell()
12 print '数据:
', f.read()
13 f.close()

5.使用with语句配合IO操作

1 with open('/path/to/file', 'r') as f:
2       print f.read()

注:该种方式可以自动调用close()方法,避免出错!!!

原文地址:https://www.cnblogs.com/jfl-xx/p/7793962.html