本篇博文,主要总结Python中的文件及相关操作,下面开始干货。
为了更好地展示用例,笔者在D盘目录下初始化一个text.txt的文本文档,内容如下:
aaaaaa
bbbbbb
cccccc
dddddd
eeeeee
ffffff
gggggg
文件相关定义
- 内置函数open创建一个Python文件对象,作为计算机上的一个文件链接。
f = open('D:/test.txt')
type(f) # <class '_io.TextIOWrapper'>
- r表示读,w表示==(覆盖)写==,a表示在尾部追加。
- 2中三个字符串加上b,进行二进制数据处理。
- 2中三个字符串加上“+”意味着同时为输入和输出打开文件。
- 如果文件路径不存在,是不能够创建输入文件的(如果在open函数中传入’r’或’r+‘会报错),可以创建输出文件(如果在open函数中传入’w’,‘w+’,‘a’,'a+'会直接创建文件)。
f = open('D:/new.txt', 'r') # FileNotFoundError: [Errno 2] No such file or directory: 'D:/new.txt'
- 从文件中读取内容,是字符串,不是对象。
f = open('D:/test.txt', 'r')
s = f.readline()
type(s) # <class 'str'>
文件相关操作
操作 | 解释 |
---|---|
output = open(r’D:\test.txt’, ‘w’) | 创建输出文件 |
input = open(‘D:/test.txt’, ‘r’) | 创建输入文件 |
input = open(‘D:\test.txt’) | 同上,即默认’r’ |
aString = input.read() | 把整个文件读入单一字符串 |
aString = input.read(N) | 读取之后的N个字节到一个字符串 |
aString = input.readline() | 读取下一行到一个字符串 |
aString = input.readlines() | 读取整个文件到字符串列表 |
output.write(aString) | 写入字节字符串到文件 |
output.writelines(aList) | 把列表内所有字符串写入文件 |
output.close() | 手动关闭 |
output.flush() | 把输出缓冲区刷到硬盘中,不关闭文件 |
anyFile.seek(N) | 修改文件位置到偏移量N处 |
for line in open(‘D:/test.txt’): use line | 文件迭代器一行一行读取 |
open(‘D:/test.txt’, encoding=‘latin-1’) | Python 3.0及之后版本中的Unicode文本文件 |
open(‘f.bin’, ‘rb’) | Python 3.0及之后版本中二进制byte文件 |
- rstrip()方法去掉行尾的换行符,比较常用。
f = open('D:/test.txt', 'r')
s = f.readline() # 'aaaaaa\n'
s.rstrip() # 'aaaaaa'
- 读取文件时,光标会随着上一次读取的内容移动。
f = open('D:/test.txt', 'r')
s = f.read(10) # 'aaaaaa\nbbb'
s = f.read(10) # 'bbb\ncccccc'
- 常用eval函数,将读取出的字符串当成可执行代码。
s = '[1, 2, 3]'
l = eval(s) # [1, 2, 3]
- 可以使用内置的pickle模块存储Python的原生对象,比如字典(当然也可以采用json等多种常用模块存储)。注意,用二进制模式打开用来存储pickle化的对象文件。
import pickle
D = {
'a':1, 'b':2}
F = open('D:/dic.pkl', 'wb')
pickle.dump(D, F)
F.close()
F = open('D:/dic.pkl','rb')
s = pickle.load(F)
print(s) # {'a': 1, 'b': 2}
type(s) # <class 'dict'>
以上,欢迎各位读者朋友提出意见或建议。
欢迎阅读笔者后续博客,各位读者朋友的支持与鼓励是我最大的动力!
written by jiong
满纸荒唐言,一把辛酸泪。
都云作者痴,谁解其中味?