Я пытаюсь рекурсивно перечислить все файлы внутри папки (включая подпапки) и распаковать zip-файлы. Tha'ts, как я это делаю:Рекурсивно перечислять файлы в папке и распаковывать zip-файлы
def scan(real_path):
matches = []
for root, dirnames, filenames in walk(real_path):
for filename in fil(filenames, '*'):
matches.append(path.join(root, filename))
return matches
def unzip(destination, path):
z = ZipFile(path, mode = "r")
for archive in z.namelist():
content = z.read(archive)
archive = open("%s/%s" % (destination, archive), "w")
archive.write(content)
z.close()
def startup_files(starting_over = False):
print "STARTING FILES AGAIN..." if starting_over else \
"STARTING FILES..."
x = scan(folder)
print "Files found in folder:"
print x
for archive in x:
archive = Archive.details(archive)
print "READING:", archive.full_path
if archive.extension == ".ZIP":
unpack_zip(archive)
remove(archive.full_path)
startup_files(True)
Это вызывает эту странную ошибку. Я тестирую сценарий с 2 файлами, 1.zip
и 2.ZIP
, в какой файл у меня есть этот файл: SFPDB001.GBK
Выход есть:
Итерация один: хорошо
STARTING FILES...
Files found in folder:
['arp\\_input\\backups\\1.zip', 'arp\\_input\\backups\\2.ZIP']
READING: C:\Users\G1745 IRON\Development\LL\ARP\arp\_input\backups\1.zip
Итерация два: хорошо
STARTING FILES AGAIN...
Files found in folder:
['arp\\_input\\backups\\2.ZIP', 'arp\\_input\\backups\\SFPDB001.GBK']
READING: C:\Users\G1745 IRON\Development\LL\ARP\arp\_input\backups\2.ZIP
итерация три: ОШИБКА: функция сканирования поиска нужных файлов внутри папки, но итерация пытается т o удалять недоступные файлы.
STARTING FILES AGAIN...
Files found in folder:
['arp\\_input\\backups\\SFPDB001.GBK']
READING: C:\Users\G1745 IRON\Development\LL\ARP\arp\_input\backups\SFPDB001.GBK
READING: C:\Users\G1745 IRON\Development\LL\ARP\arp\_input\backups\SFPDB001.GBK
READING: C:\Users\G1745 IRON\Development\LL\ARP\arp\_input\backups\2.ZIP
C:\Users\G1745 IRON\Development\LL\ARP\arp\_input\backups\2.ZIP
Traceback (most recent call last):
File "arp\__main__.py", line 22, in <module>
main()
File "arp\__main__.py", line 18, in main
ARP(p.parse_args()).run()
File "C:\Users\G1745 IRON\Development\LL\ARP\arp\arp.py", line 26, in run
self.startup_files()
File "C:\Users\G1745 IRON\Development\LL\ARP\arp\arp.py", line 46, in startup_files
self.unpack_zip(archive)
File "C:\Users\G1745 IRON\Development\LL\ARP\arp\arp.py", line 62, in unpack_zip
Zip.unzip(self.folder, archive.full_path)
File "C:\Users\G1745 IRON\Development\LL\ARP\arp\zip.py", line 17, in unzip
z = ZipFile(path, mode = "r")
File "C:\Python25\lib\zipfile.py", line 339, in __init__
self.fp = open(file, modeDict[mode])
IOError: [Errno 2] No such file or directory: 'C:\\Users\\G1745 IRON\\Development\\LL\\ARP\\arp\\_input\\backups\\2.ZIP'
Я не имею ни малейшего представления, почему это происходит ... У меня есть опыт работы JS, и теперь я начинаю с питоном, поэтому я не знаю, если я должен делать что-то.
OBS: Я использую Python v2.5, потому что его устаревший код.
Ну, ошибка не оставляет нам много возможностей ... Файл 'C: \\ Пользователи \\ G1745 IRON \\ Разработка \\ LL \\ ARP \\ arp \\ _ input \\ backups \\ 2. ZIP', похоже, вообще не существует. Может быть, это написано неправильно? – lucasnadalutti
Кстати, ошибка не в итерации 3, как вы сказали ... Она все еще находится на итерации 2. – lucasnadalutti
Файл существует, когда программа запускается, но он удаляется на второй итерации. Вторая итерация - это повторение файлов, которые не находятся в массиве отсканированных файлов ... действительно причудливо. –