Python File Slurp - PullRequest
       35

Python File Slurp

41 голосов
/ 27 октября 2009

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

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

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

Ответы [ 2 ]

94 голосов
/ 27 октября 2009

Это приведет к тому, что в Python содержимое будет записано в одну строку 2.6 1 и выше:

with open('x.txt') as x: f = x.read()

И это создаст список строк:

with open('x.txt') as x: f = x.readlines()

Эти подходы гарантируют немедленное закрытие входного файла сразу после чтения.

Сноска:

  1. Этот подход также может быть использован в Python 2.5 с использованием from __future__ import with_statement.

Более старый подход, который не не гарантирует немедленное закрытие, заключается в использовании этого для создания одной строки:

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

И это для создания списка строк:

f = open('x.txt').readlines()

На практике он будет немедленно закрыт в некоторых версиях CPython, но закрыт "только когда сборщик мусора доберется до него" в Jython, IronPython и, возможно, в некоторых будущих версиях CPython.

1 голос
/ 24 сентября 2013

Если вы используете Python3, убедитесь, что вы правильно соблюдаете кодировку ввода вашего файла, например ::

import codecs
with codecs.open(filename, 'r', encoding="utf8") as file:
    cts = file.read()

Найти список имен кодеков в списке кодеков Python3 . (Механизм также рекомендуется для Python2 всякий раз, когда вы ожидаете ввод не-ASCII)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...