有人有仅使用 Python 代码将 tar.gz 文件转换为 zip 的代码吗?我遇到了 tar.gz 的许多问题,如如何使用带有 gzip 压缩选项的 pandas read_csv 读取 tar.gz 文件?
您必须使用tarfile模块和'r|gz'读取模式。然后使用zipfile进行写入。
import tarfile, zipfile
tarf = tarfile.open( name='mytar.tar.gz', mode='r|gz' )
zipf = zipfile.ZipFile( file='myzip.zip', mode='a', compression=zipfile.ZIP_DEFLATED )
for m in tarf:
f = tarf.extractfile( m )
fl = f.read()
fn = m.name
zipf.writestr( fn, fl )
tarf.close()
zipf.close()
Run Code Online (Sandbox Code Playgroud)
您可以用来is_tarfile()检查有效的 tar 文件。
也许你也可以使用shutil,但我认为它不能在内存上工作。
PS:根据我执行的简短测试,您可能会对m目录成员有问题。如果是这样,您可能必须使用is_dir(),或者甚至首先使用 获取每个 tar 文件成员的信息tarf.getmembers(),然后打开tar.gz文件以传输到zip,因为之后您无法执行此操作tarf.getmembers()(您无法向后查找)。