【发布时间】:2023-08-19 19:33:01
【问题描述】:
我已经搜索过,我只能找到关于另一种方式的问题:将标准输入写入文件。
有没有快速简便的方法将文件内容转储到stdout?
【问题讨论】:
标签: python
我已经搜索过,我只能找到关于另一种方式的问题:将标准输入写入文件。
有没有快速简便的方法将文件内容转储到stdout?
【问题讨论】:
标签: python
当然。假设您有一个名为fname 的文件名的字符串,则可以使用以下方法。
with open(fname, 'r') as fin:
print(fin.read())
【讨论】:
print(fin.read(), end="")。要在 Python 2 下利用该解决方案,需要前缀 from __future__ import print_function。当然,Python 2 应用程序应该总是使用 Python 3 print() 函数——所以这不是什么负担。
如果它是一个大文件,并且您不想像 Ben 的解决方案那样消耗大量内存,那么
中的额外代码>>> import shutil
>>> import sys
>>> with open("test.txt", "r") as f:
... shutil.copyfileobj(f, sys.stdout)
也可以。
【讨论】:
f = open('file.txt', 'r')
print f.read()
f.close()
来自http://docs.python.org/tutorial/inputoutput.html
要读取文件的内容,请调用 f.read(size),它会读取一定数量的数据并将其作为字符串返回。 size 是一个可选的数字参数。当 size 省略或为负时,将读取并返回文件的全部内容;如果文件是机器内存的两倍,那是你的问题。否则,最多读取并返回 size 个字节。如果已到达文件末尾,f.read() 将返回一个空字符串 ("")。
【讨论】:
我在 Python3 中的缩短版
print(open('file.txt').read())
【讨论】:
你也可以试试这个
print ''.join(file('example.txt'))
【讨论】:
如果你在jupyter notebook,你可以简单地使用:
!cat /path/to/filename
【讨论】:
你可以试试这个。
txt = <file_path>
txt_opn = open(txt)
print txt_opn.read()
这将为您提供文件输出。
【讨论】:
如果您需要使用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())
【讨论】:
为了改进@bgporter 的答案,使用 Python-3,您可能希望对字节进行操作,而不是不必要地将内容转换为 utf-8:
>>> import shutil
>>> import sys
>>> with open("test.txt", "rb") as f:
... shutil.copyfileobj(f, sys.stdout.buffer)
【讨论】:
对文件的行迭代器进行操作(如果您以文本模式打开——默认)既简单又节省内存:
with open(path, mode="rt") as f:
for line in f:
print(line, end="")
请注意end="",因为这些行将包含它们的行尾字符。
这几乎正是(其他)Ben 的回答中链接的文档中的示例之一:https://docs.python.org/3/tutorial/inputoutput.html#methods-of-file-objects
【讨论】: