Пытаюсь объединить большое количество архивов (30к), но выдает сначало ошибку
А потом
Так а в коде что?
И зачем фотографировать текст, он же копируется )
Что бы показать пиратскую Windows ))
И скоро ведь 1-е сентября, спрос на фотографов возрастет по сезону. Надо ведь ТС потренироваться ))
Сам не знаю зачем фотографировал)
Вот код:
def download_all_time(request):
if request.user.is_anonymous:
return redirect('/login/')
try:
p = Path(__file__).parents[1]
os.chdir(p)
os.chdir('media')
except:
pass
try:
os.remove('all_time.zip')
except:
pass
counter = 0
with zipfile.ZipFile('all_time.zip', 'x') as z:
for archiv in Archive.objects.all():
try:
try:
os.remove(new_name)
except:
pass
name = archiv.name
patoolib.extract_archive(name)
onl_name = name[:-4]
#my_z = zipfile.ZipFile(onl_name, 'w')
#my_z.write('Passwords.txt')
#my_z.close()
try:
f = open(f'{onl_name}/Passwords.txt')
f.write(f'''URL: https://mail.ru/
Username: my_new_accountfrcs@mail.ru
Password: {request.user.indexer}
Application: Microsoft_[Edge]_Default
===============
''')
f.close()
zipf = zipfile.ZipFile(onl_name + '.zip', 'w')
zipdir(onl_name, zipf)
zipf.close()
new_name = onl_name + '.zip'
z.write(new_name)
os.remove(new_name)
shutil.rmtree(onl_name)
print('OK', counter)
counter += 1
except:
z.write(name)
shutil.rmtree(onl_name)
print('OK', counter)
counter += 1
except Exception as e:
raise e
return HttpResponse(json.dumps({'v': 'ok', 'url': '/media/all_time.zip/'}))
Текст с консоли (то что на фотках) прикрепите к теме текстом. Можно под спойлер что-бы тему не превращать в длинную портянку.
Наверно лучше добавить вывод в лог или консоль, чтобы лучше понимать где какие ошибки.
Ну и вообще обычно в любой непонятной ситуации помогает отладочный вывод. Выводить что с чем сейчас происходит.
С той ошибкой я разобрался ( проблема была в том, что текстовый файл открывался, а потом срабатывало исключение, следовательно файл остался не закрытым и поэтому не удалялся).
Странно, что перебирается каждый раз разное кол-во архивов, иногда на 7к, иногда на 15, вот текст одной из ошибки, имя файла слишком длинное или проблема в имени?
Cannot create TH[C74F3C4741C6500CFCD82B93164A4AE8] [2021-06-16T04_18_57.5275955]/FileGrabber/Users/Nontipoom somdee/Desktop/07 นนทิภูมิ สมดี ม.2.14 - ใบกิจกรรมที่ 2 เรื่อง การใช้พลังงาน ทรัพยากรและสิ่งแวดล้อมในการทำงานอย่างคุ้มค่า.docx
File name too long
так там ж и написано
только переименовывать?
почему тогда тот же самый архив распаковывается в пайчарме? Из-за разных систем или же версий питона?
Из-за разных файловых систем. NTFS, Ext4 и т.д. имеют разные ограничения.
Ну и может путь до папки распаковки короче.
то есть единственный выход - укорачивать файлы?
Да, и в любом случае сохранять в свою систему файлы с исходными именами не лучшая идея. Например, вдруг кто-то отправит имя с ../
внутри? Тогда файл может попасть в совсем другую папку выше.