Python:将文件打印到stdout

时间:2011-11-10 18:12:54

标签: python

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

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

10 个答案:

答案 0 :(得分:100)

不确定。假设你有一个名为fname的文件名字符串,以下就可以了。

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

答案 1 :(得分:36)

如果它是一个大文件而你不想消耗大量的内存,就像Ben的解决方案可能会发生那样,那么

中的额外代码
>>> import shutil
>>> import sys
>>> with open("test.txt", "r") as f:
...    shutil.copyfileobj(f, sys.stdout)

也有效。

答案 2 :(得分:14)

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

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

  

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

答案 3 :(得分:5)

我在Python3中缩短的版本

print(open('file.txt').read())

答案 4 :(得分:2)

你也可以试试这个

print ''.join(file('example.txt'))

答案 5 :(得分:0)

你可以试试这个。

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

这将为您提供文件输出。

答案 6 :(得分: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())

答案 7 :(得分:0)

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

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

答案 8 :(得分:0)

如果您在 jupyter notebook,您可以简单地使用:

!cat /path/to/filename

答案 9 :(得分:0)

在文件的行迭代器上操作(如果您以文本模式打开——默认)很简单且节省内存:

with open(path, mode="rt") as f:
    for line in f:
        print(line, end="")

请注意 end="",因为这些行将包含其行尾字符。

这几乎正是 (other) Ben 的回答中链接的文档中的示例之一:https://docs.python.org/3/tutorial/inputoutput.html#methods-of-file-objects