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

时间:2010-03-19 11:51:48

标签: python list dictionary iterable

因此,假设我有一个令人难以置信的嵌套迭代列表/词典。我想尽可能轻松地将它们打印到文件中。为什么我不能将打印重定向到文件?

val = print(arg) 得到一个SyntaxError。

有没有办法访问stdinput?

为什么打印需要永远使用大量字符串?对我来说输出大量字符串的编程很糟糕,但是调试很快 - 而不是利用交互式提示的强度吗?

可能还有一种比我的抱怨更容易的方式。蜂巢头脑有答案吗?

5 个答案:

答案 0 :(得分:2)

您可以查看Python的logging模块。也许这就是这种情况下的完美匹配。

答案 1 :(得分:1)

了解您如何使用print作为功能docs say that you can redirect to file,如下所示:

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

答案 2 :(得分:1)

在Python 3.*中,要将一个print调用重定向到打开的文件对象destination

print(arg, file=destination)

在Python 2.*中,print是一个语句,语法为

print>>destination, arg

我想你正在使用2.*,因为在3.*中分配print的结果不是语法错误(它只是没用,因为结果是None,但允许)。在2.* print中是语句,而不是函数,因此您提供的代码段实际上是语法错误。

我不确定这项任务应该是什么意思。如果要重定向一个或多个print语句(或调用)以将格式化结果作为内存中字符串,则可以将sys.stdout设置为StringIO(或{{1实例;但你特别提到“一个文件”,所以我真的很困惑这个任务的意图。请澄清一下?

答案 3 :(得分:1)

您通常不会使用print来写入文件(尽管从技术上讲可以)。你可以使用一个文件对象。

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

如果print永远显示一个巨大的字符串,很可能它不是print的错误,而是必须显示所有屏幕的结果。

答案 4 :(得分:0)

我尝试使用python 2.7

两个例子都没有成功

首先,我使用记事本

在C:\ goat.text中创建了一个文件

接下来我尝试了以下

导入sys

打印>>“C:\ goat.txt”,“测试” 错误 AttributeError:'str'对象没有属性'write'

print(“test”,file = open('C:\ goat.txt','w'))

SyntaxError :(“输入'=''没有可行的选择,('C:\ Users \ mike \ AppData \ Local \ Temp \ sikuli-tmp5165417708161227735.py',3,18,'print(”test“, file = open(\'C:\\ goat.txt \',\'w \'))\ n'))

我尝试过多个变种,但无法解决这个问题。