1.压缩一个文件夹下的所有文件 #coding=utf8 import os import tarfile __author__ = 'Administrator' def main(): cwd = os.getcwd() tar = tarfile.open('test.tar','w:gz') for root ,dir,files in os.walk(cwd): tar = tarfile.open("sample.tar.gz") tar.extractall() tar.close() 3.有选择的解压缩一个tar包 import os import tarfile def py_files(members): for tarinfo in members: if os.path.splitext(tarinfo.name py_files(tar)) tar.close() 参考资料: https://docs.python.org/2/library/tarfile.html
See TarFile Objects.tarfile.is_tarfile(name)Return True if name is a tar archive file, that the tarfile -l monty.tarCommand-line options-l <tarfile>--list <tarfile>List files in a tarfile. -c <tarfile> <source1> ... <sourceN>--create <tarfile> <source1> ... -e <tarfile> [<output_dir>]--extract <tarfile> [<output_dir>]Extract tarfile into the current directory -t <tarfile>--test <tarfile>Test whether the tarfile is valid or not.
import tarfile # 压缩文件的方法 tar = tarfile.open('/tmp/demo.tar.gz', 'w:gz') # gzip压缩 tar.add('/etc/hosts ') tar.add('/etc/security') tar.close() # tar tvzf /tmp/demo.tar.gz # 解压文件的方法 tar = tarfile.open('/tmp
''' python中的tarfile模块实现文档的归档压缩和解压缩 功能: 把工作空间下面的所有文件,打包生成一个tar文件 同时提供一个方法把该 http://www.cnblogs.com/hongten 7 #Create : 2013-08-19 8 #Version: 1.0 9 10 import os 11 import tarfile 12 ''' 13 python中的tarfile模块实现文档的归档压缩和解压缩 14 15 功能: 16 把工作空间下面的所有文件,打包生成一个tar文件 系统会自动创建该文件,如果该文件以及存在,则打开文件 30 打开文件后,向文件中添加文件(这个功能类似于把几个文件 31 打包成tar包文件)''' 32 with tarfile.open 48 49 def extract_files(tar_path, ext_path, ext_name): 50 '''解压tar文件中的部分文件到指定目录中''' 51 with tarfile.open
python可以通过tarfile模块压缩和解压.tar.bz2包 #压缩文件夹为 .tar.bz2 import tarfile import bz2 archive = tarfile.open(' archive.add(r'd:\myfiles') # d:\myfiles contains the files to compress archive.close() 解压一个.tar.bz2 import tarfile import bz2 archive = tarfile.open('myarchive.tar.bz2','r:bz2') archive.debug = 1 # Display the files
python可以通过tarfile模块压缩和解压.tar.bz2包 #压缩文件夹为 .tar.bz2 import tarfile import bz2 archive = tarfile.open(' archive.add(r'd:\myfiles') # d:\myfiles contains the files to compress archive.close() 解压一个.tar.bz2 import tarfile import bz2 archive = tarfile.open('myarchive.tar.bz2','r:bz2') archive.debug = 1 # Display the files
丰富的库支持:Python有多个强大的库支持处理各种压缩文件格式,如zipfile、tarfile、shutil等。 读取 TAR 文件 使用 tarfile 模块可以方便地读取TAR文件中的内容。 import tarfile # 打开TAR文件 with tarfile.open('example.tar', 'r') as tar_ref: # 列出TAR文件中的所有文件 tar_ref.list import tarfile # 创建TAR文件 with tarfile.open('new_archive.tar', 'w') as tar_ref: # 向TAR文件中添加文件 import tarfile # 向现有TAR文件中添加文件 with tarfile.open('existing_archive.tar', 'a') as tar_ref: tar_ref.add
具体如下所示: >>> import tarfile >>> with tarfile.open('etc.tar') as t: ... print(member.name) 上面的代码中,导入 tarfile 库,使用默认的读模式打开 tar 包,tarfile.open() 函数返回一个 TarFile 对象,这个对象表示当前打开的 具体如下所示: >>> import tarfile >>> with tarfile.open('etc.tar', mode='w') as f: ... 使用 tarfile 创建和读取压缩包非常简单,只要在打开文件时指定压缩算法即可。对于 tarfile 的 open 函数,以「打开模式:压缩算法」的形式打开即可。具体如下所示: a. 创建一个用 bzip2 算法压缩的 tar 包: >>> import tarfile >>> with tarfile.open('etc.tar', mode='w:bz2') as f:
自2007年以来一直未修补 这个漏洞存在于Python tarfile软件包中,具体存在于使用未作净化处理的tarfile.extract()函数或tarfile.extractall()内置默认值的代码中 Trellix高级威胁研究团队的漏洞研究人员Charles McFarland说:“未编写在调用tarfile.extract()或tarfile.extractall() 之前净化处理成员文件的任何安全代码导致了目录遍历漏洞 该漏洞源自这个事实:Python的tarfile模块中的extract函数中的代码明确信任TarInfo对象中的信息,加入了被传递给extract函数和TarInfo对象中名称的路径。 Charles McFarland说:“在GitHub的帮助下,我们获得了一个庞大得多的数据集,包含588840个在python代码中含有‘import tarfile’的独特存储库。” GitHub Copilot建议易受攻击的tarfile提取代码。 Trellix在进一步研究该问题后发现,易受CVE-2007-4559攻击的开源代码“遍布众多行业”。
os.walk(person_dir): for file_name in file_names: print file_name 解压tar,tar.gz #解压 import tarfile import os def untar(fname, dirs): t = tarfile.open(fname) t.extractall(path = dirs) if __name 压缩 import tarfile import os def tar(fname): t = tarfile.open(fname + ".tar.gz", "w:gz") for
os.walk(person_dir): for file_name in file_names: print file_name 解压tar,tar.gz #解压 import tarfile import os def untar(fname, dirs): t = tarfile.open(fname) t.extractall(path = dirs) if __name 压缩 import tarfile import os def tar(fname): t = tarfile.open(fname + ".tar.gz", "w:gz") for
python可以通过tarfile模块压缩和解压.tar.bz2包 #压缩文件夹为 .tar.bz2 import tarfile import bz2 archive = tarfile.open(' archive.add(r'd:\myfiles') # d:\myfiles contains the files to compress archive.close() 解压一个.tar.bz2 import tarfile import bz2 archive = tarfile.open('myarchive.tar.bz2','r:bz2') archive.debug = 1 # Display the files
import osimport tarfile# 函数功能是tar_file_list所有文件,和tar_dir_list所有目录下的所有文件,被压缩到一个tar_file_name的压缩文件中def my_tar_function(tar_file_name, tar_file_list=[], tar_dir_list=[], model="w"): # 本来也应该是tarfile.TarFile (tar_file_name, model)来创建的,但TarFile不支持"r:gz"等扩展形式 # 压缩文件最后需要close,为了方便我们直接用with with tarfile.open 和zipfile相比tarfile允许直接压缩目录,而不需要去遍历目录一个个文件压 for tmp_dir in tar_dir_list: tar_obj.add( ", model="r"): with tarfile.open(tar_file_name, model) as tar_obj: tar_obj.extractall(path=
目录 shutil模块(了解) zipfile压缩解压缩 tarfile压缩解压缩 shutil模块(了解) 高级的文件、文件夹、压缩包处理模块。 shutil.make_archive("/tmp/data_bak", 'gztar', root_dir='/data') zipfile压缩解压缩 # shutil 对压缩包的处理是调用 ZipFile 和 TarFile ('data.data') z.close() # 解压 z = zipfile.ZipFile('laxi.zip', 'r') z.extractall(path='.') z.close() tarfile 压缩解压缩 import tarfile # 压缩 t=tarfile.open('/tmp/egon.tar','w') t.add('/test1/a.py',arcname='a.bak') t.add ('/test1/b.py',arcname='b.bak') t.close() # 解压 t=tarfile.open('/tmp/egon.tar','r') t.extractall('/egon
(gZipStream, output, overwriteFiles: true); 以上代码的核心是先采用 GZipStream 对输入的 tar.gz 文件进行解压缩,再采用 TarFile 将解压缩之后的内容写入到传入的文件夹里面 如上面代码所示,不到 10 行可执行代码,就可以完成从 tar.gz 压缩文件里读取数据,解压缩到输出文件夹 有一些伙伴也许会错误地使用 TarFile 辅助类直接解压缩 tar.gz 文件,如以下错误示例所示 TarFile.ExtractToDirectory(file, output, overwriteFiles: true); 以上代码将会遇到 System.IO.InvalidDataException 这就是为什么直接使用 TarFile 解压缩 tar.gz 会错误的原因,因为 tar.gz 压根就不是 tar 格式,而是 gz 格式的。 必须采用 GZipStream 解压缩之后才能给 TarFile 使用 本文代码放在 github 和 gitee 上,可以使用如下命令行拉取代码。
该漏洞被追踪为CVE-2007-4559(CVSS评分:6.8),根植于tarfile模块,可能导致任意文件写入的代码执行。 “该漏洞是tarfile模块中的extract和extractall函数中的路径遍历攻击,允许攻击者通过在TAR档案中的文件名中添加‘..’序列来覆盖任意文件。” 简单地说,威胁者可以利用这个弱点上传恶意tarfile,使其有可能逃脱文件被提取到的目录,并实现代码执行,从而使对手有可能夺取对目标设备的控制。 “在没有事先检查的情况下,千万不要从未知来源提取档案,"tarfile 的 Python 文档中写道。
BackupParser.java文件:public class BackupParser { public static void unpackBackup(String abFile, String tarFile AndroidBackupExtractor.extractTar( new FileInputStream(abFile), new FileOutputStream(tarFile throw new RuntimeException("备份解析失败", e); } } public static void modifyBuildProp(File tarFile try { // 实现build.prop的实时修改 tis = new TarArchiveInputStream(new FileInputStream(tarFile )); tos = new TarArchiveOutputStream(new FileOutputStream("modified_" + tarFile.getName())
os.path.sep) #相对路径 zipf.write(pathfile, arcname) zipf.close() 二、tar/tar.gz import os, tarfile def make_targz(output_filename, source_dir): with tarfile.open(output_filename, "w:gz") as tar: def make_targz_one_by_one(output_filename, source_dir): tar = tarfile.open(output_filename,"w:gz
wwwwwwwwww", 'gztar', root_dir='/Users/wupeiqi/Downloads/test') shutil 对压缩包的处理是调用 ZipFile 和 TarFile z.write('data.data') z.close() # 解压 z = zipfile.ZipFile('laxi.zip', 'r') z.extractall() z.close() import tarfile # 压缩 tar = tarfile.open('your.tar','w') tar.add('/Users/wupeiqi/PycharmProjects/bbs2.log', arcname= log') tar.add('/Users/wupeiqi/PycharmProjects/cmdb.log', arcname='cmdb.log') tar.close() # 解压 tar = tarfile.open ('your.tar','r') tar.extractall() # 可设置解压地址 tar.close() 备注:zipfile压缩不会保留文件的状态信息,而tarfile会保留文件的状态信息
_make_zipfile('D:/软件/shutil.make_ar','D:/软件/pycharm/day5') #shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的 z.write('C:/shutil.make_ar.zip') #添加文件或目录到压缩包 z.write('C:/b') #添加文件或目录到压缩包 z.close() #tar.gz包解压 import tarfile gz = tarfile.open('D:/软件/shutil.make_ar.tar.gz') #指定解压包 gz.extractall('D:/软件/py_shiyan') #指定保存路径 gz.close () #tar.gz包压缩 tar = tarfile.open('D:/软件/shiyan.tar.gz','w') #指定压缩包保存路径 tar.add('D:/a.txt') #添加文件或目录到压缩包