Как открыть текстовой файл в python?
Одногруппник пишет через with и говорит что иначе не примут, а на паре показывали open и close отдельно котор. Оба варианта падают на кодировке, файл из блокнота..
Ваш вопрос
Одногруппник пишет через with и говорит что иначе не примут, а на паре показывали open и close отдельно котор. Оба варианта падают на кодировке, файл из блокнота..
Способ 1, весь файл целиком: with open('файл.txt', encoding='utf-8') as f: текст = f.read() Подходит, когда файл небольшой и с содержимым удобно работать как с одной строкой, например искать подстроку или считать длину.
Способ 2, по строкам списком: with open('файл.txt', encoding='utf-8') as f: строки = f.readlines() Каждый элемент списка - отдельная строка файла, включая символ переноса строки в конце, его при необходимости убирают методом strip().
Способ 3, построчно в цикле: with open('файл.txt', encoding='utf-8') as f: for line in f: print(line.strip()) Этот способ не загружает весь файл в память сразу, а читает по одной строке за раз, поэтому он лучше подходит для действительно больших файлов, которые целиком в память не влезут или влезут с трудом.
Про кодировку: Параметр encoding='utf-8' стоит указывать всегда явно, а не полагаться на кодировку по умолчанию, потому что на разных операционных системах и в разных настройках она может отличаться, и без явного указания при чтении файла с кириллицей легко получить ошибку декодирования или нечитаемый набор символов вместо нормального текста.
Про отсутствие файла: Если путь указан неверно, python выбросит FileNotFoundError ещё до попытки что-то прочитать, поэтому первым делом при такой ошибке стоит проверить сам путь, желательно абсолютный, а не относительный, чтобы не зависеть от того, из какой папки был запущен сам скрипт.
4o
Открывать текстовый файл в python принято через open() внутри конструкции with, потому что with сам закроет файл после использования, даже если внутри блока произойдёт ошибка: with open('файл.txt', encoding='utf-8') as f: текст = f.read(). Чтение сразу всего файла подходит для небольших файлов, а если нужно построчно, есть цикл for line in f, который читает по одной строке, не загружая сразу весь файл в память. encoding='utf-8' стоит указывать явно, потому что на windows python иногда открывает файл в другой кодировке по умолчанию, и тогда русские буквы превращаются в нечитаемый набор символов. Если файла по указанному пути нет, python выбросит FileNotFoundError, и первое, что стоит проверить - правильный ли путь, абсолютный он или относительный от текущей рабочей папки.
Пока нет премиум-вопросов в подборке
Не нашли то, что искали?
Задайте свой вопрос
Лучший ответ
4.1 Fast
4.1 Fast
Как открыть текстовой файл в python?
open('файл.txt', encoding='utf-8') внутри with - и всё, файл сам закроется после блока. f.read() тянет разом весь текст одной строкой, f.readlines() - список строк, а for line in f - экономнее по памяти, читает построчно без загрузки всего файла целиком. Забыл encoding - получишь кракозябры на windows, особенно если в файле кириллица.