提取压缩文件
|
以下代码允许我提取.tgz文件。但是,它会在大约下降两级后停止提取。还有其他子文件夹具有.tgz文件,需要解压缩。此外,提取文件时,必须手动将其移至其他路径,否则它将被提取到该位置的其他.tgz文件覆盖(我使用的所有.tgz文件都具有相同的文件结构/文件夹名称一旦提取)。任何帮助表示赞赏。谢谢!
import os, sys, tarfile
def extract(tar_url, extract_path=\'.\'):
print tar_url
tar = tarfile.open(tar_url, \'r\')
for item in tar:
tar.extract(item, extract_path)
if item.name.find(\".tgz\") != -1 or item.name.find(\".tar\") != -1:
extract(item.name, \"./\" + item.name[:item.name.rfind(\'/\')])
try:
extract(sys.argv[1] + \'.tgz\')
print \'Done.\'
except:
name = os.path.basename(sys.argv[0])
print name[:name.rfind(\'.\')], \'<filename>\'
没有找到相关结果
已邀请:
1 个回复
佃蒜狗掂哥
解压缩后,目录结构将为-
尽管我在下面的代码中提供了大量文档,但是我只是简要介绍了程序的结构。这是我定义的功能-
我无法建议您对所做的操作进行更改,因为我的方法有些不同。我使用的是
模块的
方法,而不是像您所做的那样有点复杂的
方法。 (请看一下-http://docs.python.org/library/tarfile.html#tarfile.TarFile.extractall并阅读与使用
方法相关的警告。我认为我们不会遇到任何此类问题一般而言,但请记住这一点。) 所以这是对我有用的代码- (我尝试对嵌套5个深度的
文件(即
内的
中的
... 5次)进行了测试,但它适用于任何深度*,也适用于
文件。)
我还没有添加命令行界面。我想如果您觉得有用的话,可以添加它。 这是上述程序的更好的版本- http://guanidene.blogspot.com/2011/06/nested-tar-archives-extractor.html