Я использую модуль ОС, чтобы открыть файл для чтения, но получаю ошибку FileNotFoundError.
я пытаюсь
Когда я пытаюсь сделать открытие, я получаю следующую ошибку:
File "parse_mda_SIC.py", line 16, in <module>
f = open(file, 'r')
FileNotFoundError: [Errno 2] No such file or directory:
'mda_3357_2017-03-08_1000230_000143774917004005__3357.txt'
Я подозреваю, что проблема связана либо с переменной «файл», либо с тем, что это один каталог вниз, но не понимаю, почему это может произойти, когда я использую ОС для обращения к этому нижнему каталогу.
У меня есть следующий код:
working_dir = "data/"
for file in os.listdir(working_dir):
if (file.find("mda") != -1):
SIC = re.findall("__(\d+)", file)
f = open(file, 'r')
Я ожидаю, что смогу открыть файл без проблем, а затем создать свой список из данных. Спасибо за вашу помощь.
хотя у меня есть os.listdir в начале кода?
Да, он получает имя файла только в начале вашего кода, но не сохраняет весь каталог.
да, вы правы - спасибо за ваше время






Это должно сработать для вас. Вам нужно добавить каталог, потому что он видит его просто как имя файла в верхней части вашего кода и будет искать только в каталоге, где находится ваш код для этого имени файла.
for file in os.listdir(working_dir):
if (file.find("mda") != -1):
SIC = re.findall("__(\d+)", file)
f = open(os.path.join(working_dir, file), 'r')
Также рекомендуется открывать файлы с помощью контекстного менеджера with, так как он справится с закрытием вашего файла, когда он больше не нужен:
for file in os.listdir(working_dir):
if (file.find("mda") != -1):
SIC = re.findall("__(\d+)", file)
with open(os.path.join(working_dir, file), 'r') as f:
# do stuff with f here
Нет проблем, я только что отредактировал и предложил использовать контекстный менеджер. Если это ответ на ваш вопрос, поставьте галочку. :)
Я обычно делаю, но мне нужно подождать 5 минут, прежде чем принять
Ага, никаких проблем, когда это позволяет.
Вам нужно добавить каталог, например:
f = open(os.path.join(working_dir, file, 'r'))
Вероятно, вам нужно добавить каталог к имени файла, чтобы он работал.