在Python中读写文件内容的简单方法

124 投票
7 回答
177949 浏览
提问于 2025-04-16 04:23

在Ruby中,你可以通过 s = File.read(filename) 从文件中读取内容。在Python中,我知道的最简洁明了的方式是:

with open(filename) as f:
    s = f.read()

有没有其他方法可以做到更短(最好是一行代码)且更易读呢?

注意:我最开始把问题表述为“用一行代码来实现这个”。正如S.Lott所指出的,短并不一定意味着更易读。所以我重新表述了我的问题,以便更清楚地表达我的意思。我认为Ruby的代码更好、更易读,不仅仅是因为它是一行代码而不是两行(虽然这也很重要),还因为它是一个类方法,而不是实例方法,这样就不需要担心谁来关闭文件,如何确保即使出现异常也能关闭文件等等。正如下面的回答所提到的,你可以依赖垃圾回收(GC)来关闭文件(这样就能做到一行代码),但这反而让代码变得更糟,尽管它更短。这不仅因为它不够通用,还因为让代码变得不清晰。

7 个回答

42

这段内容和上面的一样,但没有处理错误:

s = open(filename, 'r').read()
77

使用 pathlib 这个库。

如果你用的是 Python 3.5 或更高版本:

from pathlib import Path
contents = Path(file_path).read_text()

如果你用的是更低版本的 Python,可以使用 pathlib2

$ pip install pathlib2

然后

from pathlib2 import Path
contents = Path(file_path).read_text()

写东西也同样简单:

Path(file_path).write_text('my text')
197

这是一句简单的话。没有必要这样做。

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

撰写回答