Я использую следующий код для извлечения файлов .tgz и .tar в один каталог, в котором находятся архивные файлы.Он отлично работает с одним файлом.Но когда я выбираю другой файл в том же каталоге для извлечения, текущая папка перезаписывается (все файлы извлекают корневую папку с именем хранилища).Я предполагаю, что это причина, почему файлы перезаписываются.Таким образом, я могу иметь только один извлеченный файл в каталоге одновременно.Я пытался придумать умный способ извлечь файлы в тот же каталог, возможно, назвать извлеченный файл чем-то уникальным, как только он будет извлечен.Тем не менее, я начинающий программист на 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>'