suf*_*ffa 11 python compression gzip tar
我正在使用下面的代码来提取.tgz文件..tgz我需要提取的日志文件类型()具有包含其他.tgz文件和.tar文件的子目录.我也想提取这些.
最终,我正在尝试搜索可能出现在文件中的所有.log文件和.txt文件中的某些字符串.tgz.
下面是我用来提取.tgz文件的代码.我一直在努力找出如何提取子文件(.tgz和.tar).到目前为止,我一直没有成功.
import os, sys, tarfile
try:
tar = tarfile.open(sys.argv[1] + '.tgz', 'r:gz')
for item in tar:
tar.extract(item)
print 'Done.'
except:
name = os.path.basename(sys.argv[0])
print name[:name.rfind('.')], '<filename>'
Run Code Online (Sandbox Code Playgroud)
ber*_*rni 13
这应该会给你想要的结果:
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>'
Run Code Online (Sandbox Code Playgroud)
正如@cularis所说,这称为递归.