将打印输出定向到 .txt 文件

新手上路,请多包涵

有没有办法将所有打印输出保存到 python 中的 txt 文件?假设我的代码中有这两行,我想将打印输出保存到名为 output.txt 的文件中。

 print ("Hello stackoverflow!")
print ("I have a question.")

我想要 output.txt 文件包含

Hello stackoverflow!
I have a question.

原文由 Clone 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 593
2 个回答

给出 print 一个 file 关键字参数,其中参数的值是一个文件流。最佳做法是使用 with 块使用 open 函数打开文件,这将确保文件在块末尾为您关闭:

 with open("output.txt", "a") as f:
  print("Hello stackoverflow!", file=f)
  print("I have a question.", file=f)

来自 关于 print 的 Python 文档

file 参数必须是具有 write(string) 方法的对象;如果它不存在或 Nonesys.stdout 将被使用。

以及 open 的文档

打开 file 并返回相应的文件对象。如果无法打开文件,则会引发 OSError

"a" 作为 open 的第二个参数意味着“追加” - 换句话说,文件的现有内容不会被覆盖。如果您希望文件在 with 块的开头被覆盖,请使用 "w"


with 块很有用,否则,您需要记住像这样自己关闭文件:

 f = open("output.txt", "a")
print("Hello stackoverflow!", file=f)
print("I have a question.", file=f)
f.close()

原文由 Aaron Christiansen 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以将标准输出重定向到文件“output.txt”:

 import sys
sys.stdout = open('output.txt','wt')
print ("Hello stackoverflow!")
print ("I have a question.")

原文由 Roman Bronshtein 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题