Как открыть файл для чтения в python?
Одногруппник говорит через with обязательно, а у меня в методичке на 47 странице без него.
Ваш вопрос
Одногруппник говорит через with обязательно, а у меня в методичке на 47 странице без него.
Вывод: чтобы прочитать файл, используй open с режимом 'r' и обязательно закрывай файл или работай через конструкцию with.
Причина ошибки FileNotFoundError. Python ищет файл не там, где лежит сам файл на диске, а относительно текущей рабочей директории — то есть от того места, откуда запущен скрипт, а не от папки, где физически лежит файл. Если ты запускаешь скрипт из другой папки в терминале, а файл рядом со скриптом, питон его не найдёт по короткому имени.
Как проверить у себя. Выведи текущую директорию через os.getcwd() и посмотри, совпадает ли она с папкой, где лежит файл. Если нет — либо запускай скрипт из нужной папки, либо укажи полный путь к файлу, либо построй путь через модуль os или pathlib относительно расположения самого скрипта.
Базовый рабочий пример. Открой файл конструкцией with open('файл.txt', 'r', encoding='utf-8') as f: и дальше читай через f.read() для всего текста сразу или f.readlines() для списка строк, или проходи циклом for строка in f для построчного чтения без загрузки всего файла в память.
Про кодировку. На windows файлы иногда сохраняются не в utf-8, тогда при чтении вылезет ошибка декодирования. Укажи encoding явно, а если не угадал — попробуй cp1251 или посмотри, в чём сохранял файл текстовый редактор.
Про закрытие файла. Конструкция with закрывает файл автоматически, даже если внутри блока возникла ошибка, поэтому её и советуют вместо ручного open и close.
Режим | что делает 'r' | читать текст, файл должен существовать 'rb' | читать байты, для не текстовых файлов 'r+' | читать и писать одновременно
Базовая связка: with open('файл.txt', 'r', encoding='utf-8') as f: и дальше f.read().
Почему with, а не голый open — потому что забудешь закрыть файл, он повиснет открытым, и на винде потом не сможешь его удалить или переименовать. Ещё момент: путь ищется от папки запуска скрипта, а не от папки самого файла, отсюда половина криков про FileNotFoundError. Смотри рабочую директорию, если файл 'не находится', хотя лежит рядом.
Пока нет премиум-вопросов в подборке
Не нашли то, что искали?
Задайте свой вопрос
Лучший ответ
v4-flash
v4-flash
Как открыть файл для чтения в python?
Открывай файл через with open('файл.txt', 'r', encoding='utf-8') as f, потом f.read() или цикл по строкам. Режим 'r' — чтение текста, по умолчанию файл должен существовать, иначе будет FileNotFoundError. Проверь рабочую директорию: путь ищется от места запуска скрипта, а не от расположения самого файла на диске.