Существует несколько методов, которые могут быть вызваны для чтения открытого файла:
fp.read(size=-1):
Метод считывает из файла не более size символов в текстовом режиме или size байтов в бинарном режиме и возвращает результат в виде строки в текстовом режиме или байтового объекта в двоичном режиме. Размер size является необязательным числовым аргументом. Если size опущен или равен None или -1, все содержимое файла будет прочитано и возвращено. Если файл в два раза больше оперативной памяти вашей машины, то это уже ваша проблема. В противном случае считываются и возвращаются Если достигнут конец файла, fp.read() вернет пустую строку ('').
>>> with open('text.txt', 'r') as fp: ... # Чтение и печать всего файла ... print(fp.read())
fp.readline(size=-1):
Метод читает не более size символов в строке за раз. Считывание продолжается до конца строки. Если аргумент опущен или равен None или -1, то читается вся строка (или остальная часть строки). Символ новой строки '\n' остается в конце возвращаемой строки и опускается только в последней строке файла.
>>> with open('text.txt', 'r') as fp: ... # читаем и печатаем первые 5 символов строки ... print(fp.readline(5))
fp.readlines():
Метод читает файл целиком и возвращает их в виде списка.
>>> with open('text.txt', 'r') as fp: ... # Возвращает объект списка ... text_list = fp.readlines() ... >>> text_list # ['Строка №1', 'Строка №2', 'Строка №3', 'Строка №4', 'Строка №5']
Приведенный выше пример также можно выполнить с помощью функции list() для создания списка из файлового объекта:
>>> with open('text.txt', 'r') as fp: ... # Возвращает объект списка ... text_list = list(fp) ... >>> text_list # ['Строка №1', 'Строка №2', 'Строка №3', 'Строка №4', 'Строка №5']
Обычно, что нужно делать при чтении файла, это читать из него по одной строке и каким-то образом ее обрабатывать. Вот пример того, как использовать метод fp.readline() для выполнения чтения файла построчно:
>>> with open('text.txt', 'r') as fp: ... # Считывание и печать всего файла строка за строкой ... line = fp.readline() ... while line != '': ... print(line, end='') ... line = fp.readline()
Другой способ, которым можно перебирать каждую строку в файле, это использовать метод file.readlines() файлового объекта. Помните, что этот метод возвращает список, где каждый элемент в списке представляет строку в файле:
>>> with open('text.txt', 'r') as fp: ... for line in fp.readlines(): ... print(line, end='')
Приведенные выше примеры могут быть упрощены путем перебора самого объекта file. Этот подход более быстрый и эффективный. Рекомендуется использовать именно его для чтения файлов:
>>> with open('text.txt', 'r') as fp: ... # Считывание и печать всего файла строка за строкой ... for line in fp: ... print(line, end='')
Примечание:
примеры содержат запись print(line, end="). end= " предотвращает добавление дополнительной новой строки в печатаемый текст. Дополнительно смотрите описание функции print().