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

 

posted on 2022-05-08 11:24  墙角一枝花  阅读(50)  评论(0编辑  收藏  举报