open打开模式
'''
r:只读模式,默认
a:追加模式,原有基础上加数据
w:创建一个新文件,但会把原来的数据清掉,谨慎使用
x:创建一个新文件,存在文件会报错
b:二进制模式,针对图片,音频等
r+ 读写模式
'''
open(file,mode='r',encoding='utf-8')
open 读方法
f=open('test.txt',encoding='utf-8')
print(f.read(1)) # 读取一个字符串
print(f.read()) # 读取整个文件
print(f.readline()) # 读取一行字符串
f.seek(0) # 光标移动到头部
print(f.readline()) # 重新读取第一行
for line in f:
print(line) #循环读取每一行
if '五' in line:
print(f'存在:{line}')
open写方法
# 追加模式
f=open('1.txt',mode='a',encoding='utf-8')
f.write('\n七 八 九') # 最后一行加数据
其他方法
f = open('test.txt','w',encoding='utf-8')
f.write('一二三')
f.flush() # 当写入磁盘较慢时,可以使用强制刷新缓存
print(f.truncate(0)) #保底前0个字符,后面全删
print(f.tell()) #查看光标位置,跟seek配合使用,就可以知道要指定哪个位置删除
更新数据
f = open('test.txt', 'r+', encoding='utf-8')
# 使用读写模式
# 先把文件加载到内存
# 修改内存数据
# 清空文件
# 把修改后的数据放入
data = f.read()
new_data = data.replace('一二三','三二一')
f.truncate(0)
f.seek(0)
f.write(new_data)
f.close()
文件删除
import os
os.remove('test1.txt')
编码格式
# 带有二进制模式的,后面不可加编码模式
f=open('jpg.jpg','rb') # 读取非文件文件,返回二进制
print(f.read())
f=open('test.txt','wb') # 以二进制的方式写文件
s='以二进制的方式写文件'
f.write(s.encode('utf-8')) # 二进制模式下不可以直接写入文本,本质上是使用了unicode,所以需要转换成utf-8才可以写入
解码,编码
python解释器是用unicode进行解释的,所以需要用解码编码的方式进行一个相互转化,unicode相当于做为一个中间沟通解释的编码
s_gbk='这是gbk'.encode('gbk')
s_utf='这是utf-8'.encode('utf-8')
print(f'编码后的s_gbk:{s_gbk},s_utf:{s_utf}') #编码后返回二进制格式
# 针对编码后的内容进行解码,告诉解释器这个内容原来使用了什么编码格式
s_gbk=s_gbk.decode('gbk')
s_utf=s_utf.decode('utf-8')
print(f'解码后的s_gbk:{s_gbk},s_utf:{s_utf}') #解码后返回原来的内容
返回结果:
编码后的s_gbk:b'\xd5\xe2\xca\xc7gbk',s_utf:b'\xe8\xbf\x99\xe6\x98\xafutf-8'
解码后的s_gbk:这是gbk,s_utf:这是utf-8
# -*- coding:utf-8 -*- 必要时在文件加这行代码才能支持中文,一般python3默认支持