Правильно ли я считаю, что Python не может открывать и читать файлы .out?

В настоящее время мое приложение выдает кучу файлов .out, которые будут считываться вручную для целей регистрации. Я создаю скрипт Python для автоматизации этого.

Когда скрипт попадает в следующее

for file in os.listdir(DIR_NAME):
    if (file.endswith('.out')):
        open(file)

Сценарий взрывается со следующей ошибкой «IOError: Нет такого файла или каталога:« Filename.out »»

У меня есть аналогичная функция с приведенным выше кодом и работает нормально, только он читает файлы .err. Распечатка DIR_NAME до того, как приведенный выше код также показывает, что на правильный каталог указывает.

0
deanmau5 25 Янв 2013 в 20:26

2 ответа

Лучший ответ

os.listdir() возвращает только имена файлов, а не полные пути. Используйте os.path.join() для создания полного пути:

for file in os.listdir(DIR_NAME):
    if (file.endswith('.out')):
        open(os.path.join(DIR_NAME, file))
5
Martijn Pieters 25 Янв 2013 в 16:27

Как альтернатива, которую я считаю немного проще и гибче в использовании:

import glob,os

for outfile in glob.glob( os.path.join(DIR_NAME, '*.out') ):
    open(outfile)

Глоб также будет принимать такие вещи, как '*/*.out' или '*something*.out'. Я также читаю файлы определенных типов и обнаружил, что это очень удобно.

0
Daniel 25 Янв 2013 в 16:44