【发布时间】:2011-06-10 18:51:40
【问题描述】:
我正在使用以下代码将 .tgz 和 .tar 文件提取到存档文件所在的同一目录中。它适用于单个文件。但是,当我选择同一目录中的另一个文件进行提取时,当前文件夹将被覆盖(所有文件都提取一个名为 storage 的根文件夹)。我想这就是文件被覆盖的原因。所以,我每次只能在目录中提取一个文件。我试图想出一种聪明的方法来将文件提取到同一目录中,也许在提取后将提取的文件命名为唯一的名称。但是,我是一名新手 Python 程序员,目前没有完成此类任务的技术知识或智能工具集。任何帮助表示赞赏。就目前而言,每次我想提取文件时都必须选择不同的输出目录。
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('/')])
userpath = "Extracted"
directory = os.path.join("c:\\", userpath)
try:
for root, dirname, files in os.walk(directory):
for file1 in files:
if file1.endswith(".tgz") or file1.endswith(".tar"):
extract(os.path.join(root, file1))
print 'Done!'
except:
name = os.path.basename(sys.argv[0])
print name[:name.rfind('.')], '<filename>'
【问题讨论】: