标签:文件 编码 python open 读写 encoding Desktop data
一、文件读写分类
【1】w,写文件:如果文件不存在,先创建一个文件,然后写入
【2】r,读文件,需要注意编码类型,要和写入文件时一致
【3】wb,写文件。如果写入的是bytes类型,则不需要编码解码
【4】wb,写文件,如果写入的是字符串类型,则需要编码解码
【5】rb,读文件,如果读取的是bytes类型,则不需要编码解码
【6】rb,读文件,如果读取的是字符串类型,则需要编码解码
# -*- coding:utf-8 -*-
# __author__:
# 2022/5/8
# 文件读写
# w写文件,如果文件不存在,先创建一个文件,然后写入
with open('/Users/x/Desktop/database/data/write.txt','w',encoding='utf8') as f:
f.write('abcabcabc嗄')
# r读文件,需要注意编码类型,要和写入文件时一致
with open('/Users/x/Desktop/database/data/write.txt','r',encoding='utf8') as f:
print(f.read())
# wb写文件。如果写入的是bytes类型,则不需要编码解码
with open('/Users/x/Desktop/database/data/bwrite.txt','wb') as f:
f.write(b'abc123')
# rb读文件,如果读取的是bytes类型,则不需要编码解码
with open('/Users/x/Desktop/database/data/bwrite.txt','rb') as f:
print(f.read())
# wb写文件,如果写入的是字符串类型,则需要编码解码
with open('/Users/x/Desktop/database/data/bswrite.txt','wb') as f:
f.write('碎碎念念'.encode('utf8'))
# rb读文件,如果写入的是字符串类型,则需要编码解码
with open('/Users/x/Desktop/database/data/bswrite.txt','rb') as f:
print(f.read().decode('utf8'))
二、图片、视屏、word文件、excel表格、pdf复制
【1】以二进制读写
# -*- coding:utf-8 -*-
# __author__:
# 2022/5/8
# 读取png内容,写入到另一个文件内并重命名(复制后重命名)
# 以二进制形式读写:图片、视屏、word文件、excel表格、pdf
# 定义一个变量,存储读取后的数据
pngData = b''
# 读取数据
with open('/Users/x/Desktop/database/data/img1.png','rb') as f:
pngData = f.read()
#复制写入数据,并且重命名
with open('/Users/x/Desktop/database/data/img2.png','wb') as f:
f.write(pngData)
三、判断文件类型
【1】导入chardet包
【1】以二进制方式读取文件中的内容,用chardet.detect方法判断文件类型
# -*- coding:utf-8 -*-
# __author__:
# 2022/5/8
# 判断文件编码类型 chardet
import chardet
# 二进制方式读取文件内容,读取字节数据,检测类型
def getFileType(file):
with open(file,'rb') as f:
# 读取其中的1024个字节即可
data = f.read(1024)
# chardet.detect方法会返回三个参数:encoding(编码类型)、confidence(相似度)、language(语言)
# 返回回参中的encoding
return chardet.detect(data)['encoding']
file = '/Users/x/Desktop/database/data/write.txt'
print(getFileType(file))
四、网页编码方式
# 通过apparent_encoding方法获取网页要求的编码方式,赋值给encoding,则不会造成网页编码错误
response.encoding = response.apparent_encoding
标签:文件,编码,python,open,读写,encoding,Desktop,data 来源: https://www.cnblogs.com/flowers-pansy/p/16245087.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。