在Python中重定向print: val = print(arg) 将混合可迭代输出到文件
假设我有一个非常复杂的列表和字典的嵌套结构。我想把它们尽可能简单地打印到一个文件里。为什么我不能直接把打印的内容重定向到一个文件呢?
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
本身的问题,而是因为要把这么多内容显示到屏幕上导致的。