文件操作
打开文件
fileobj = open(filename, mode, encoding)
# mode的第一个字母
# r 读
# w 写,如果文件不存在则新建,若存在则重写其内容
# x 在文件不存在的情况下新建并写文件
# a 如果文件存在,在文件末尾追加写内容
# mode的第二个字母
# t 可省略,表示文本类型
# b 代表二进制文件
# encoding表示编码方式
# 有些文件会被误认为是与当前默认编码不同的其他编码形式,会造成UnicodeDecodeError。这时需要我们手动指定编码形式
open('example.html', encoding='utf-8')
如果不是使用with
方法,则在打开文件后需要手动调用文件关闭方法f.close()
使用with
语句:
with open(filename) as f:
for line in f.readlines():
print(line.strip()) # 去除末尾的'\n'
读取文件
f = fileobj.read() # 一次性读取全部内容
f = fileobj.read(size) # 读取指定大小的内容
f = fileobj.readline() # 一次读取一行内容。重复调用则会继续调用下面的行
f = fileobj.readlines() # 一次性读取所有行,并返回各行组成的list
# 读取二进制文件
f = open(filename, 'rb')
bytedata = f.read()
写入文件
with open(filename) as f:
f.write(str) # 返回写入文件的字节数
# print(str, file = f, sep = '', end = '')
# sep分隔符:默认为空格' '
# end结束字符:默认是换行符'\n'
# 写入二进制文件
f = open(filename, 'wb')
f.write(bytedata)
f.close()
使用seek()
改变读写位置
tell()
返回距离文件开始处的字节偏移量,seek()
允许跳转到文件其他字节偏移量的位置
with open(filename) as f:
f.tell() # 0
f.seek(255) # 255
# seek()同样返回当前的偏移量
f.tell() #255
seek(offset, origin)
offset: 0 - 默认值,代表从开头处偏移offset个字节 1 - 从当前位置偏移offset个字节 2 - 距离最后结尾处偏移offset个字节