繁体   English   中英

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

[英]Redirect print in Python: val = print(arg) to output mixed iterable to file

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

val = print(arg)获取SyntaxError。

有没有办法访问stdinput?

为何打印会永久占用大量字符串? 对于输出大量字符串而言,我这一边的编程很差,但是调试却很快速,这不是利用交互式提示的优势吗?

还有一种比我的抱怨更简单的方法。 蜂巢有答案吗?

您可以查看Python的日志记录模块。 在这种情况下,也许这是完美的搭配。

看到您如何使用print as function时, 文档显示您可以像这样重定向到文件

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

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

print(arg, file=destination)

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

print>>destination, arg

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

我不确定任务应该指的是什么。 如果要重定向一个或多个print语句(或调用)以将格式化的结果作为内存中的字符串获取,则可以将sys.stdout设置为StringIO (或cStringIO )实例; 但是您特别提到“到文件”,因此我对该分配的预期含义感到困惑。 请澄清?

通常,您不使用print来写入文件(尽管从技术上讲可以)。 您将为此使用文件对象。

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

如果print花费大量时间显示大量字符串,那可能不是完全print的错,而是必须将所有内容显示在屏幕上的结果。

我尝试使用python 2.7都没有成功的两个示例

首先,我使用记事本在C:\\ goat.text中创建了一个文件

接下来我尝试了以下

导入系统

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

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

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

我尝试了多种变体,但无法解决此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM