Подтвердить что ты не робот

Файл Python Slurp

Есть ли однострочный файл для чтения всех строк файла в Python, а не в стандарте:

f = open('x.txt')
cts = f.read()
f.close()

Похоже, это делается так часто, что должен быть один лайнер. Любые идеи?

4b9b3361

Ответ 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)