Python 文件操作
1. 字符简介
字符:无论什么语言,独立的一个文字就是一个字符
存储单位:
Byte 字节
bit 位
1B = 8b
B:字节,1 Byte = 8 bit
字符大小:
任何字符集:英文和数字都是一个字节,汉字等是多个字节存储
GB系列编码:存储一个汉字使用2个字节
UTF系列编码:存储一个汉字使用3个字节
字符编码:
ASCII
中文编码:
GB2312 5000个常用汉字
GB18030 升级版,15000个汉字
GBK 包含所有中文的编码(推荐)
BIG5 繁体中文编码
万国码:
unicode:包含世界上所有的文字
utf-8: 可变长的unicode编码
2. 文件基本操作
readline:读取一行文件内容
readlines:将文件中的内容按照换行读取到列表当中
writelines:将内容是字符串的可迭代性数据写入文件中 参数:内容是字符串类型的可迭代性数据
truncate:把要截取的字符串拿出来,清空文件,再把字符串写入到文件中(操作字节)
readable:判断文件是否可读
writeable:判断文件是否可写
打开模式:
w 写入模式,文件不存在则创建,存在则先清空内容,并且将文件指针放在文件的开头
fp = open("ceshi.txt",mode="w",encoding="utf-8") # 创建文件对象 fp.write("abc") # 写入数据 fp.close() # 关闭文件
r 读取模式,文件不存在则报错,存在则打开文件,并且将指针放在文件的开头
fp = open("ceshi.txt",mode="r") # 创建一个文件对象 res = fp.read() # 读取内容 print(res) # 打印 fp.close() # 关闭文件
a 追加模式,文件不存在则创建文件,存在则打开文件,并且将指针放在文件的末尾
fp = open("ceshi.txt","a",encoding="utf-8") # 创建一个文件对象 fp.write("111aaa") # 在文件末尾追加数据 fp.close() # 关闭文件
+ 增强模式(可以让文件具有读写功能)
# r+模式 先读后写
fp = open("ceshi.txt","r+",encoding="utf-8") # 创建一个文件对象
res = fp.read() # 读取文件数据
print(res)
fp.write("222ccc") # 写入数据
fp.seek(0) # 把光标移到行首
res = fp.read() # 读取文件
print(res)
fp.close()
# r+模式 先写后读
fp = open("ceshi.txt","r+",encoding="utf-8")
fp.seek(0,2) # 把光标移到末尾
fp.write("asdf")
fp.seek(0) # 把光标移到行首
res = fp.read()
print(res)
fp.close()
b bytes模式(二进制字节流)
with open("ceshi1.txt","wb") as fp:
fp.write("abc".encode())
with open("ceshi1.txt","rb") as fp:
res = fp.read().decode()
print(res)
将字符串和字节流类型进行转换:
encode()编码 将字符串转化成字节流
decode()解码 将Bytes流转化成字符串
utf-8编码,默认一个中文占三个字节,一个英文或符号占一个字节
read(字节) 读取字符的个数
seek(字节) 调整指针的位置
tell(字符) 当前光标左侧所有的字节数
刷新缓冲区 flush
当文件关闭时自动刷新缓冲区
当整个程序运行结束时自动刷新缓冲区
当缓冲区写满时自动刷新缓冲区
手动刷新缓冲区
with 语法:自动关闭文件
3. 压缩模块 zipfile(zip)
3.1 压缩文件
import zipfile # 导入 zipfile 模块
zf = zipfile.ZipFile("ceshi1.zip","w",zipfile.ZIP_DEFLATED) # 创建一个 zipfile 对象
zf.write("/bin/cat","cat") # 把文件写入到压缩文件中
zf.write("/bin/ls","ls")
zf.close() # 关闭文件
3.2 解压文件
zf = zipfile.ZipFile("ceshi1.zip","r")
zf.extract("ls","ls") # 解压单个文件
zf.extractall("ceshi1") #解压所有文件到文件夹 ceshi1 中
3.3 追加文件
zf = zipfile.ZipFile("ceshi1.zip","a")
zf.write("/bin/yum","yum")
3.4 查看压缩包中的内容
zf = zipfile.ZipFile("ceshi1.zip","r")
lst = zf.namelist()
print(lst)
文件操作支持 with 语法(自动关闭文件):
with zipfile.ZipFile("ceshi1.zip","a",zipfile.ZIP_DEFLATED) as zf:
zf.write("/bin/chmod","chmod")
4. 压缩文件 tarfile (后缀为.tar、.tar.gz、.tar.bz2)
4.1 创建压缩包
创建.tar 压缩包
import tarfile
tf = tarfile.open("ceshi2.tar","w",encoding="utf-8")
# 写入文件到压缩包中
tf.add("rpw.py","rpw.py")
tf.add("t1.py","t1.py")
tf.close()
创建 .tar.gz 压缩包
import tarfile
tf = tarfile.open("ceshi3.tar","w:gz",encoding="utf-8")
# 写入文件到压缩包中
tf.add("rpw.py","rpw.py")
tf.add("t1.py","t1.py")
tf.close()
创建 .tar.bz2 压缩包
import tarfile
tf = tarfile.open("ceshi4.tar","w:bz2",encoding="utf-8")
# 写入文件到压缩包中
tf.add("rpw.py","rpw.py")
tf.add("t1.py","t1.py")
tf.close()
4.2 解压压缩包
import tarfile
tf = tarfile.open("ceshi1.tar","r")
tf.extract("ls","ceshi1/ls")
tf.extractall("ceshi1")
tf.close()
4.3 追加文件
# tarfile 的追加,只能是只打包不压缩的包进行追加(.tar),其他模式不可以
import tarfile
with tarfile.open("ceshi1.tar","a",encoding="utf-8") as tf:
tf.add("/bin/yum","yum")
4.4 查看压缩包中的内容
with tarfile.open("ceshi2.tar.gz","r",encoding="utf-8") as tf:
# 返回一个列表
lst = tf.getnames()
print(lst)