python-文件读写
一、文件读写分类
【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