Python文件Slurp

Mik*_*ron 42 python file-io

是否有单行程序来读取Python中文件的所有行,而不是标准:

f = open('x.txt')
cts = f.read()
f.close()
Run Code Online (Sandbox Code Playgroud)

似乎经常这样做,所以必须有一个单行.有任何想法吗?

Ale*_*lli 98

这将在Python 2.6 1及更高版本中将内容压缩为单个字符串:

with open('x.txt') as x: f = x.read()
Run Code Online (Sandbox Code Playgroud)

这将创建一个行列表:

with open('x.txt') as x: f = x.readlines()
Run Code Online (Sandbox Code Playgroud)

这些方法保证在读取后立即关闭输入文件.

脚注:

  1. 这种方法也可以在Python 2.5中使用from __future__ import with_statement.

保证立即关闭的旧方法是使用它来创建单个字符串:

f = open('x.txt').read()
Run Code Online (Sandbox Code Playgroud)

这要创建一个行列表:

f = open('x.txt').readlines()
Run Code Online (Sandbox Code Playgroud)

在实践中,它将在某些版本的CPython中立即关闭,但在Jython,IronPython以及可能的CPython的未来版本中"仅当垃圾收集器到达它时"才关闭.


drh*_*gen 6

从 Python 3.5 开始,您可以将该pathlib模块用于更现代的界面。作为 Python 3,它区分了读取文本和读取字节:

from pathlib import Path

text_string = Path('x.txt').read_text()  # type: str

byte_string = Path('x.txt').read_bytes()  # type: bytes
Run Code Online (Sandbox Code Playgroud)