Извлечь несколько файлов в папку - [Errno 2] Нет такого файла или каталога - PullRequest
0 голосов
/ 01 ноября 2019

Я запускаю следующий скрипт, чтобы разархивировать несколько zip-файлов из каталога:

import os
from zipfile import ZipFile

dir_name = f"C:/my_path/zip/{name}"

def main():

    for item in os.listdir(dir_name):
        with ZipFile(item, 'r') as zipObj: 
            listOfFileNames = zipObj.namelist()
            for fileName in listOfFileNames: 
                if fileName.endswith('.csv'):
                    for i in fileName:
                        zipObj.extract(fileName, f"C:/my_path/csv/{name}")

if __name__ == '__main__':
    main()

Дело в том, что я сто раз подтверждал, что файлы zip хранятся по правильному пути, но яне могу запустить скрипт, но я успешно выполнил другой компьютер (?)

Что я делаю не так?

РЕДАКТИРОВАТЬ:

Это сообщение об ошибке полностью:

FileNotFoundError                         Traceback (most recent call last)
<ipython-input-6-7f26de4464fe> in <module>
     18 
     19 if __name__ == '__main__':
---> 20     main()

<ipython-input-6-7f26de4464fe> in main()
     10 
     11     for item in os.listdir(dir_name): # Iterate over the zip file
---> 12         with ZipFile(item, 'r') as zipObj: # Create a ZipFile Object and load sample.zip in it
     13             listOfFileNames = zipObj.namelist() # Get a list of all archived file names from the zip
     14             for fileName in listOfFileNames: # Iterate over the file names

C:\Anaconda\lib\zipfile.py in __init__(self, file, mode, compression, allowZip64)
   1111             while True:
   1112                 try:
-> 1113                     self.fp = io.open(file, filemode)
   1114                 except OSError:
   1115                     if filemode in modeDict:

FileNotFoundError: [Errno 2] No such file or directory: 'my_file.zip'

1 Ответ

0 голосов
/ 01 ноября 2019

Это может быть ключ:

Пересмотреть эту строку:

dir_name = f"C:/my_path/zip/{name}"

Кому:

dir_name = "C:/my_path/zip"

Почему?
Поскольку os.listdir ищетв каталоге с именем "C:/my_path/zip/{name}", но он не существует, так как переменная name не была объявлена. Таким образом, приведенная ниже ошибка, как это происходит на моем компьютере (хотя Linux и, следовательно, путь не-типа Windows):

FileNotFoundError: [Errno 2] No such file or directory: '/devmt/services/{name}' 

Затем примените эту логику к остальной части вашей функции и, возможно, используйте os.path.join длясклейте ваш путь и имена файлов вместе.

...