在Python中重定向print: val = print(arg) 将混合可迭代输出到文件

2 投票
5 回答
713 浏览
提问于 2025-04-15 20:36

假设我有一个非常复杂的列表和字典的嵌套结构。我想把它们尽可能简单地打印到一个文件里。为什么我不能直接把打印的内容重定向到一个文件呢?

val = print(arg) 这样写会出现语法错误。

有没有办法访问标准输入呢?

还有,为什么打印大字符串会花费很长时间?虽然这是我在输出大字符串时的糟糕编程,但我只是想快速调试一下——难道这不是利用交互式提示的优势吗?

可能还有比我抱怨的方式更简单的方法。大家有没有什么好的建议呢?

5 个回答

1

看到你把 print 当成一个函数来用,文档上说你可以像这样把输出重定向到文件

print(arg, file=open('fname', 'w'))
2

你可以看看Python的日志模块。也许在这种情况下,它正好适合你。

1

一般来说,你不会用 print 来写入文件(虽然从技术上讲是可以的)。你应该使用文件对象来完成这个任务。

with open(filename, 'w') as f:
    f.write(repr(your_thingy))

如果 print 显示一个很大的字符串花了很长时间,可能不是 print 本身的问题,而是因为要把这么多内容显示到屏幕上导致的。

撰写回答