文件操作

打开文件

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个字节

results matching ""

    No results matching ""