python文件操作、编码转换

本文详细介绍了Python中文件的读写模式,包括'r'、'a'、'w'、'x'和'b'等模式,以及如何使用read、readline、readlines和write等方法进行数据的读写。还涵盖了文件定位、追加、更新、删除、编码解码等高级操作,是理解Python文件操作的重要参考资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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默认支持

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑*杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值