Я работаю над скриптом 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))
Вам нужно использовать
os.path.join(file_path, filenames)
вместоfilenames
.В противном случае операционная система будет искать файл в текущем каталоге вместо
file_path
.(И почему множественное число
filenames
, когда оно ссылается на одно имя файла?)