Может ли кто-нибудь объяснить и помочь мне решить, почему моя функция перестала извлекать файлы .tgz, когда я добавил счетчик для создания папок с разными именами, чтобы не дать извлеченной папке перезаписать предыдущую, когда я извлек другой файл .tgz в том же каталоге?Что я делаю неправильно?Спасибо!Ниже приведены две функции ... первая функция правильно извлекает файлы;вторая функция извлекает нумерованную папку и завершает работу.
Работает:
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('/')])
Не работает:
global counter
counter=1
def extract(tar_url, extract_path='.'):
global counter
print tar_url
tar = tarfile.open(tar_url, 'wb')# changed from r to wb 6/12
for item in tar:
tar.extract(item, extract_path+"_%d"%counter)
counter+=1
if item.name.find(".tgz") != -1 or item.name.find(".tar") != -1:
extract(item.name, "./" + item.name[:item.name.rfind('/')])
Вот как я называю ее в основном (яиспользую easygui):
direct = diropenbox(msg="Choose path to place extracted files!", title='SQA Extractor', default='c:\\Extracted')
msg = "Are you sure you want to extract?"
title = "Confirm"
os.chdir(direct)
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))