文件操作

打开文件的模式

# r模式只读模式,在这个模式下面不能往文件写内容否则报错
f = open('a.txt', 'r', encoding='utf8')
print(f.read())
f.close()

# w模式只写模式,在这个模式下面不能读内容否则报错
# 这个模式下面有一点要特别注意,如果用w模式打开一个有内容的文件,文件的内容会被清空。一定要慎重!!!!
f = open('a.txt', 'w', encoding='utf8')
print(f.write('abc'))
f.close()

# a模式追加模式,在这个模式下面不能读取内容否则报错
# 这个模式下面打开文件,不会清空文件内容,写入文件默认在最后添加
f = open('a.txt', 'a', encoding='utf8')
print(f.write('abc'))
f.close()

# ======================= 下面的模式需要跟rwa组合使用 =======================
# b模式
# 注意这个模式下面不能指定encoding,否则报错
# 这个模式是能写入bytes类型的数据,不能写入文本
f = open('a.txt', 'wb')
f.write('abc'.encode('utf8'))
f.close()
# 读出的也是bytes类型
f = open('a.txt', 'rb')
f.read()
f.close()

# t模式(默认模式)
# 这个模式是open的一个默认模式,只能读写字符类型,需要指定encoding
f = open('a.txt', 'wt')
f.write('abc')
f.close()
# 读出的也是字符类型
f = open('a.txt', 'rt')
f.read()
f.close()

# +模式
# 这个模式给rwa模式添加他们没有的功能
f = open('a.txt', 'w+')  # 赋予w读文件的功能
f.close()
f = open('a.txt', 'a+')  # 赋予a读文件的功能
f.close()
f = open('a.txt', 'r+')  # 赋予r写文件的功能
f.close()

指针操作

# 获取指针位置
f.tell()
# 移动指针
# seek有三种移动方式0,1,2,其中1和2必须在b模式下进行,但无论哪种模式,都是以bytes为单位移动的
f.seek(3, 0)  # 以文件开头为对照,移动3个bytes
f.seek(3, 1)  # 以指针当前位置为对照,移动3个bytes
f.seek(3, 2)  # 以文件结尾为对照,移动3个bytes

#
# 2. truncate是截断文件
f.truncate(n) # 如果传入n,保留文件起始位置开始到n的数据,其余的删除
f.truncate() # 如果不传n,保留文件起始位置开始到指针所在位置,其余的删除

内置方法

#掌握
f.read() #读取所有内容,光标移动到文件末尾
f.readline() #读取一行内容,光标移动到第二行首部
f.readlines() #读取每一行内容,存放于列表中

f.write('1111
222
') #针对文本模式的写,需要自己写换行符
f.write('1111
222
'.encode('utf-8')) #针对b模式的写,需要自己写换行符
f.writelines(['333
','444
']) #文件模式
f.writelines([bytes('333
',encoding='utf-8'),'444
'.encode('utf-8')]) #b模式

#了解
f.readable() #文件是否可读
f.writable() #文件是否可读
f.closed #文件是否关闭
f.encoding #如果文件打开模式为b,则没有该属性
f.flush() #立刻将文件内容从内存刷到硬盘
f.name

  

原文地址:https://www.cnblogs.com/wtil/p/13323746.html