2024-04-19 23:05:46 发布
网友
在Python中,是否有一行代码来读取文件的所有行,而不是标准的:
f = open('x.txt') cts = f.read() f.close()
好像这是经常做的,所以必须有一个一行。有什么想法吗?
这将在Python2.61和更高版本中将内容拖入单个字符串:
with open('x.txt') as x: f = x.read()
这将创建一个行列表:
with open('x.txt') as x: f = x.readlines()
这些方法保证在读取之后立即关闭输入文件。
脚注:
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,它区分了文本和字节的读取:
pathlib
from pathlib import Path text_string = Path('x.txt').read_text() # type: str byte_string = Path('x.txt').read_bytes() # type: bytes
这将在Python2.61和更高版本中将内容拖入单个字符串:
这将创建一个行列表:
这些方法保证在读取之后立即关闭输入文件。
脚注:
from __future__ import with_statement
。一种不保证立即关闭的老方法是使用它来创建一个字符串:
创建一个行列表:
实际上,在某些版本的CPython中,它会立即关闭,但在Jython、IronPython和可能是将来某个版本的CPython中,“只有当垃圾收集器绕过它时”才会关闭。
如果您使用的是Python3,请确保正确尊重文件的输入编码,例如:
在Python3 codec list中查找编解码器名称列表。 (当您期望任何非ASCII输入时,Python2也建议使用该机制)
Starting in Python 3.5,您可以将
pathlib
模块用于更现代的接口。作为Python 3,它区分了文本和字节的读取:相关问题 更多 >
编程相关推荐