Python文件Slurp

2024-04-19 23:05:46 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中,是否有一行代码来读取文件的所有行,而不是标准的:

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

好像这是经常做的,所以必须有一个一行。有什么想法吗?


Tags: 文件代码txtcloseread标准opencts
3条回答

这将在Python2.61和更高版本中将内容拖入单个字符串:

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中,“只有当垃圾收集器绕过它时”才会关闭。

如果您使用的是Python3,请确保正确尊重文件的输入编码,例如:

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

Python3 codec list中查找编解码器名称列表。 (当您期望任何非ASCII输入时,Python2也建议使用该机制)

Starting in 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

相关问题 更多 >