Python基础与拾遗6:Python中的文件

Python基础与拾遗6:Python中的文件


本篇博文,主要总结Python中的文件及相关操作,下面开始干货。
为了更好地展示用例,笔者在D盘目录下初始化一个text.txt的文本文档,内容如下:

aaaaaa
bbbbbb
cccccc
dddddd
eeeeee
ffffff
gggggg

文件相关定义

  1. 内置函数open创建一个Python文件对象,作为计算机上的一个文件链接。
f = open('D:/test.txt')
type(f) # <class '_io.TextIOWrapper'>
  1. r表示,w表示==(覆盖)写==,a表示在尾部追加
  2. 2中三个字符串加上b,进行二进制数据处理
  3. 2中三个字符串加上“+”意味着同时为输入和输出打开文件
  4. 如果文件路径不存在,是不能够创建输入文件的(如果在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'
  1. 从文件中读取内容,是字符串,不是对象。
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文件
  1. rstrip()方法去掉行尾的换行符,比较常用。
f = open('D:/test.txt', 'r')
s = f.readline() # 'aaaaaa\n'
s.rstrip() # 'aaaaaa'
  1. 读取文件时,光标会随着上一次读取的内容移动。
f = open('D:/test.txt', 'r')
s = f.read(10) # 'aaaaaa\nbbb'
s = f.read(10) # 'bbb\ncccccc'
  1. 常用eval函数,将读取出的字符串当成可执行代码
s = '[1, 2, 3]'
l = eval(s) # [1, 2, 3]
  1. 可以使用内置的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
满纸荒唐言,一把辛酸泪。
都云作者痴,谁解其中味?

猜你喜欢

转载自blog.csdn.net/jiongnima/article/details/113708371