文件读写
1. 读文件
以读文件的模式,打开一个文件对象,使用open()
函数
f = open('D:\\gittrash\\bug.txt','r')
以只读模式,读取该路径的文件,若文件不存在会报错ValueError
f.read()
print(f.read())
'''
fuck wt!
fuck you !
fuck easy
'''
将文件内容一次性全部读出,以str 返回
f.readline() 一行行地读
print(f.readline())
#fuck wt!
f.readlines() 每一行读取,并每行作为一个元素,返回一个列表
print(f.readlines())
#['fuck wt!\n', 'fuck you !\n', '\n', 'fuck easy']
f.close()
文件对象使用完,必须关闭,不然会持续占用资源,操作系统能同时打开的文件对象是有限的
不可否认,文件操作很容易报出各种各样的错误,导致后面的代码无法运行,文件对象也无法关闭,这就需要用到异常处理
try :
f = open('D:\\gittrash\\bug.txt','r')
f.read()
finally:
if f:
f.close()
finally的语句无论如何都会运行
但try ...finally
语句有些繁琐,可以简化成:
with open('D:\\gittrash\\bug.txt','r') as f:
print(f.read())
这样写不用关闭对象,with会自动处理,原因不晓得
读取时还有一个编码问题
有的文件时文本,有的是二进制,有的还有非法编码,open()函数需要设置相应的参数
f = open('D:\\gittrash\\bug.txt','rb')
print(f.read())
#b'fuck wt!\r\nfuck you !\r\n\r\nfuck easy'
这是以二进制格式读取,得到 b'...' 的数据
f = open('D:\\gittrash\\bug.txt','r',encoding='gbk')
这是要读取一个以gbk编码的文件,需要设置 encoding 参数
甚至有些文件夹杂了非法编码的字符,我们需要特别处理
f = open('/Users/michael/gbk.txt', 'r', encoding='gbk', errors='ignore')
设置errors,直接忽略
2.写文件
和读文件基本一样,改一下参数即可
f1 = open('D:\\gittrash\\bug.txt','w') 以文本形式写入
f2 = open('D:\\gittrash\\bug.txt','wr') 以二进制格式写入
你可以反复写入,但系统不会立马执行,而是放在缓冲区,直到文件对象关闭,才将所有内容写入磁盘,因此又得异常处理
with open('D:\\gittrash\\bug.txt','w') as f:
f.write("123")
其次需要注意,'w'写入模式,会将原来的文件覆盖,如果不想覆盖原来文件,添加参数a,将在最后一行继续写入
f1 = open('D:\\gittrash\\bug.txt','a')
标签:文件,读写,fuck,gittrash,txt,open,bug
From: https://www.cnblogs.com/HugoWang010220/p/17052844.html