Python:将文件打印到stdout

gar*_*h0p 75 python

我搜索过,我只能找到相反的问题:将stdin写入文件:)

有没有一种快速简便的方法将文件的内容转储到stdout?

Dav*_*ber 101

当然.假设你有一个名为call的文件名的字符串fname,下面就是这个诀窍.

with open(fname, 'r') as fin:
    print(fin.read())
Run Code Online (Sandbox Code Playgroud)

  • 对于Python 3兼容性_and_避免尾随换行符,最后一行应该是:`print(fin.read(),end ="")`.要在Python 2下利用该解决方案,将需要前缀"from __future__ import print_function".当然,Python 2应用程序应该_always_使用Python 3`print()`函数 - 所以这不是一个负担. (12认同)
  • 请注意,这将在输出的末尾添加额外的换行符. (7认同)

bgp*_*ter 38

如果它是一个大文件而你不想消耗大量内存,就像Ben的解决方案一样,那么额外的代码就是

>>> import shutil
>>> import sys
>>> with open("test.txt", "r") as f:
...    shutil.copyfileobj(f, sys.stdout)
Run Code Online (Sandbox Code Playgroud)

也有效.


Ben*_*Ben 14

f = open('file.txt', 'r')
print f.read()
f.close()
Run Code Online (Sandbox Code Playgroud)

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

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


小智 6

我在Python3中的简化版本

print(open('file.txt').read())
Run Code Online (Sandbox Code Playgroud)

  • 注意:这不会关闭文件。 (2认同)