介绍
这期内容当中小编将会给大家带来有关python实现压缩和解压缩的方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
<强>一、说明强>
压缩和解压缩是日常常用的操作,不管是windows上图形界面的操作,还是linux上用命令来进行压缩解压缩,总的而言都还是比较方便的。
但用代码来实现就没做过,近期也得实现代码压缩与解压缩操作,所以就抽时间来研究一下。
<强>二、邮政文件压缩和解压缩实现强>
导入操作系统 进口zipfile #函数功能是zip_file_list所有文件,和zip_dir_list所有目录下的所有文件,被压缩到一个zip_file_name的压缩文件中 def my_zip_function (zip_file_name zip_file_list=[], zip_dir_list=[]): #压缩文件最后需要接近,为了方便我们直接用 zipfile。ZipFile (zip_file_name“w") zip_obj: #压缩文件 在zip_file_list tmp_file: zip_obj.write (tmp_file) #压缩目录 在zip_dir_list tmp_dir: # zipfile没有直接压缩目录的功能,要压缩目录只能遍历目录一个一个文件压。 为根、dirs文件os.walk (tmp_dir): #如果想要目录为空时仍将该目录压缩进的去,该目录也要压缩一遍;反之请将以下行注释掉 zip_obj.write(根) tmp_file的文件: #拼接文件完整目录,不然只用文件名代码找不到文件 tmp_file_path=os.path。加入(根,tmp_file) zip_obj.write (tmp_file_path) #函数功能是遍历压缩文件中的所有文件 def my_traversal_zip_function (zip_file_name): zipfile。ZipFile (zip_file_name“r") zip_obj: #返回结果是一个ZipInfo列表 #如果在压缩时显示压缩目录,则目录也作为一个单独的ZipInfo呈现在列表中;反之则没有目录的ZipInfo all_file_list=zip_obj.infolist () 在all_file_list tmp_file: 打印(tmp_file.filename) #还可以在不解压的情况下直接读取文件的内容 #可以通过ZipInfo.is_dir()来区分是文件还是目录 #如果不是tmp_file.is_dir (): #与zip_obj.open zip_fd (tmp_file): #打印(zip_fd.read ()) #函数的功能是将压缩文件直接解压 def my_unzip_function (zip_file_name路径=?”): zipfile。ZipFile (zip_file_name“r") zip_obj: zip_obj.extractall(路径(路径) if __name__==癬_main__": zip_file_name=皌est_zip.zip" #自己在测试时要先自行创建好要压缩的文件和目录 zip_file_list=[“test_tar_file1.txt",“test_tar_file2.txt"] zip_dir_list=[“test_tar_dir"] my_zip_function (zip_file_name zip_file_list zip_dir_list) my_traversal_zip_function (zip_file_name) # my_unzip_function (zip_file_name路径=?”)
, <强>三、焦油文件的压缩与解压缩实现强>
除了直接的. tar文件,还包括gz/.tar.bz2/. tar。xz等格式文件的压缩与解压缩实现。
导入操作系统 进口tarfile #函数功能是tar_file_list所有文件,和tar_dir_list所有目录下的所有文件,被压缩到一个tar_file_name的压缩文件中 def my_tar_function (tar_file_name tar_file_list=[], tar_dir_list=[],模型=皐"): #本来也应该是tarfile。TarFile (tar_file_name模型)来创建的,但TarFile不支持“r: gz"等扩展形式 #压缩文件最后需要接近,为了方便我们直接用 tarfile。tar_obj开放(tar_file_name模型): #压缩文件 在tar_file_list tmp_file: tar_obj.add (tmp_file) #压缩目录。和zipfile相比tarfile允许直接压缩目录,而不需要去遍历目录一个个文件压 在tar_dir_list tmp_dir: tar_obj.add (tmp_dir) #函数功能是遍历压缩文件中的所有文件 def my_traversal_tar_function (tar_file_name模型=皉"): tarfile。tar_obj开放(tar_file_name模型): #返回结果是一个TarInfo列表 all_file_list=tar_obj.getmembers () 在all_file_list tmp_file: 打印(tmp_file.name) #还可以在不解压的情况下直接读取文件的内容 #可以通过TarInfo.isdir()来区分是文件还是目录 #如果不是tmp_file.isdir (): # #相当于邮政的开放,并不会把文件给解压出来 # tar_fd=tar_obj.extractfile (tmp_file) #打印(tar_fd.read ()) #函数的功能是将压缩文件直接解压 def my_untar_function (tar_file_name路径=案删?模型=皉"): tarfile。tar_obj开放(tar_file_name模型): tar_obj.extractall(路径(路径) if __name__==癬_main__": #自己在测试时要先自行创建好要压缩的文件和目录 tar_file_list=[“test_tar_file1.txt",“test_tar_file2.txt"] tar_dir_list=[“test_tar_dir"] tar_file_name=皌est_tar.tar" #在. tar基础上,tarfile还支持广州/bz2/xz获取的压缩,只要在原来打开模式的基础上使用:或|接上压缩方法即可,如“r: gz" #特别的,如果是读取文件,可以使用“r: *“来指示尝试以任意格式读取 open_model=皐" # open_model=皐: gz" my_tar_function (tar_file_name tar_file_list、tar_dir_list模型=open_model) open_model=皉" # open_model=皉: *“; my_traversal_tar_function (tar_file_name、模型=open_model) # open_model=皉: *“; # my_untar_function (tar_file_name路径=案删?模型=open_model)python实现压缩和解压缩的方法