这些猫全打包带走!还有猫粮!——zipfile模块
概述
zipfile模块,是python内置的,用于处理 zip 压缩文件 平常鼠标能干的,zipfile 提供的方法也都能干! 不过大多数人还是愿意用鼠标来干… …(小声)
优点,借助 python 中的其他<文件处理>的模块 根绝任务需要,构建脚本,可以实现例如备份重要数据的操作 可以处理大量的文件,减少出错的概率,防止丢失可怜的薪资,顺便带走所有宠物,不然要 python 有何用?
使用方法
实例
一、创建新的压缩文件,并添加内容
我们要把实例中的内容,添加到压缩文件中去,压缩文件命名为“cats.zip” 这里,我在命令行中操作,到实例所在的目录运行
#!python3
D:py\Auto
>>> import zipfile
>>> cats_zip = zipfile.ZipFile("cats.zip", 'w')
>>> cats_zip.write("cats", "spam.txt", compress_type=zipfile.ZIP_DEFLATED)
ok, 打包完成 我用的 ‘w’ 文件模式(写入),意味着,当cat.zip不存在时,则会创建; 但若存在,会清空同名的压缩文件内容,再写入新内容! 如果要添加文件,到已存在的压缩文件中,则文件模式要用 ‘a’ (添加)
二、读取压缩文件,查看包含的文件
现在我的cats_zip 的压缩文件对象还没有关闭,可以继续操作
>>> cats_zip.namelist()
>>> ['spam.txt', 'cats/', 'cats/catnames.txt', 'cats/zophie.jpg']
通过.namelist()方法,我们得到了一个压缩文件内,包含的目录/子目录,以及文件名字的列表
三、读取压缩文件内,文件的相关信息
所要读取的文件信息,必须在返回的列表中,否则会报错 现在来读取 spam.txt 的为压缩的大小,和压缩后的大小
>>> spamInfo = cats_zip.getinfo("spam.txt")
>>> spamInfo.file_size
>>> 53
>>>spamInfo.compress_size
>>> 43
注意,这里 spam.txt 是一个新的对象,文件大小是读取对象的“属性”,后面没有一对小括号
四、解压全部内容,或者个别需要的文件
>>> cats_zip.extractall()
>>> cats_zip.extract('spam.txt')
- 第一个是解压全部内容,默认解压到当前文件夹
- 第二个是解压 cats.zip 中的 spam.txt ,默认解压到当前文件夹
- 我们可以指定解压的目标路径(绝对路径)
- 如果指定的文件路径(绝对路径)不存在,会自动创建
>>> cats_zip.extractall("C:\\Desktop")
>>> cats_zip.extract('spam.txt', "C\\Desktop")
总结
- zipfile.ZipFile() 调用时模块名后,要注意是大写!
- python 中,文件是对象、zip是对象… …而且两者的操作类似
- 打开后记得 文件对象.close(), 或者用 with … as …,就省心多了
- 以后可以用这个“拖库”再跑路… …XD?