Есть ли однострочный файл для чтения всех строк файла в Python, а не в стандарте:
f = open('x.txt')
cts = f.read()
f.close()
Похоже, это делается так часто, что должен быть один лайнер. Любые идеи?
Ответ 1
Это приведет к получению содержимого в одну строку в Python 2.6 1 и выше:
with open('x.txt') as x: f = x.read()
И это создаст список строк:
with open('x.txt') as x: f = x.readlines()
Эти подходы гарантируют немедленное закрытие входного файла сразу после чтения.
Сноска:
Этот подход также можно использовать в Python 2.5 с помощью from __future__ import with_statement.
Более старый подход, который не гарантирует немедленного закрытия, - использовать его для создания одной строки:
f = open('x.txt').read()
И для создания списка строк:
f = open('x.txt').readlines()
На практике он будет немедленно закрыт в некоторых версиях CPython, но закрыт "только тогда, когда сборщик мусора приближается к нему" в Jython, IronPython и, возможно, в будущей версии CPython.
Ответ 2
Если вы находитесь на Python3, убедитесь, что вы правильно относитесь к кодировке ввода файла, например:
import codecs
with codecs.open(filename, 'r', encoding="utf8") as file:
cts = file.read()
Найдите список имен кодеков в списке кодеков Python3.
(Этот механизм также рекомендуется для Python2 всякий раз, когда вы ожидаете ввода не ASCII)