Python:将文件打印到标准输出


89

我已经搜索过,但我只能找到有关另一种方式的问题:将stdin写入文件:)

是否有快速简便的方法将文件内容转储到stdout?

Answers:


122

当然。假设您有一个文件名为的字符串fname,则可以使用以下方法。

with open(fname, 'r') as fin:
    print(fin.read())

8
请注意,这将在输出末尾添加额外的换行符。
DA

13
为了兼顾Python 3的兼容性避免在结尾加上换行符,最后一行可能应显示为:print(fin.read(), end="")。为了在Python 2下利用该解决方案,需要添加前缀from __future__ import print_function。当然,Python 2应用程序无论如何都应该始终使用Python 3print()函数-这样就没有太大的负担。
塞西尔·库里

42

如果文件很大,并且您不希望像Ben的解决方案那样消耗大量内存,则额外的代码

>>> import shutil
>>> import sys
>>> with open("test.txt", "r") as f:
...    shutil.copyfileobj(f, sys.stdout)

也可以。


18
f = open('file.txt', 'r')
print f.read()
f.close()

来自http://docs.python.org/tutorial/inputoutput.html

要读取文件的内容,请调用f.read(size),它将读取一定数量的数据并将其作为字符串返回。size是一个可选的数字参数。当size省略或为负数时,将读取并返回文件的全部内容;如果文件的大小是计算机内存的两倍,那将是您的问题。否则,最多读取并返回字节大小。如果已到达文件末尾,则f.read()将返回一个空字符串(“”)。




0

你可以试试看

txt = <file_path>
txt_opn = open(txt)
print txt_opn.read()

这将为您提供文件输出。


0

如果您需要对pathlib模块执行此操作,则可以使用pathlib.Path.open()来打开文件并从read()以下位置打印文本:

from pathlib import Path

fpath = Path("somefile.txt")

with fpath.open() as f:
    print(f.read())

或直接致电pathlib.Path.read_text()

from pathlib import Path

fpath = Path("somefile.txt")

print(fpath.read_text())

0

为了改善@bgporter的答案,对于Python-3,您可能希望对字节进行操作,而不是不必要地将其转换为utf-8:

>>> import shutil
>>> import sys
>>> with open("test.txt", "rb") as f:
...    shutil.copyfileobj(f, sys.stdout.buffer)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.