Python: "FileNotFoundError" Несмотря на возможность печати таких файлов

спросил: 12 мая 2018 в 04:53 в: python-3.x

Я работаю над скриптом Python3, где код просматривает каталоги и подкаталоги, чтобы вытащить все файлы gzipped warc. Я хотел бы также добавить, что файлы не находятся в моем домашнем каталоге

file_path = os.path.join('/nappa7/pip73/Service')   
walk_file(parallel_bulk, file_path)

Возможно, python не ищет, где я думаю, что это выглядит, тем не менее, вот мои функции walk_file:

def walk_file(bulk, file_path): 
warc = warcat.model.WARC()
try:
    for (file_path,dirs,files) in os.walk(file_path):
        for filenames in files:
            if filenames.endswith('.warc.gz'):
                warc.load(filenames)
except ValueError:
    pass

Когда я заменяю warc.load ( filenames) с инструкцией печати следующим образом:

            if filenames.endswith('.warc.gz'):
                print(filenames)    

Имена файлов печатаются на консоли, как ожидалось. Поэтому, это заставляет меня поверить, что python смог успешно найти все файлы warc.gz. Однако, когда я пытаюсь использовать warc.load (имена файлов), я получаю:

FileNotFoundError: [Errno 2] No such file or directory: 'Sample.warc.gz'

Я могу, конечно, использовать некоторые рекомендации. Спасибо.


Поэтому для всех, у кого есть аналогичная проблема: смена кода на это сработала:

warc.load(os.path.join(file_path, filenames))

1 ответ

NPE ответил: 12 мая 2018 в 04:55

Вам нужно использовать os.path.join(file_path, filenames) вместо filenames.

В противном случае операционная система будет искать файл в текущем каталоге вместо file_path.

(И почему множественное число filenames, когда оно ссылается на одно имя файла?)

user9899344 ответил: 12 мая 2018 в 04:57
имена файлов относятся ко всем файлам, которые заканчиваются с warc.gz. Таким образом, я ожидаю более одного файла. Я попробую ваш подход
user9899344 ответил: 12 мая 2018 в 05:05
Спасибо, это сработало