所以可以说我有一个非常嵌套的列表/字典迭代。我想尽可能轻松地将它们打印到文件中。为什么我不能将打印重定向到文件?
val = print(arg)
得到一个语法错误。
有没有办法访问标准输入?
为什么打印需要永远使用大量字符串?我的编程很糟糕,无法输出大量字符串,但调试速度很快——这不是利用了交互式提示的优势吗?
可能还有比我的抱怨更简单的方法。蜂巢思维有答案吗?
所以可以说我有一个非常嵌套的列表/字典迭代。我想尽可能轻松地将它们打印到文件中。为什么我不能将打印重定向到文件?
val = print(arg)
得到一个语法错误。
有没有办法访问标准输入?
为什么打印需要永远使用大量字符串?我的编程很糟糕,无法输出大量字符串,但调试速度很快——这不是利用了交互式提示的优势吗?
可能还有比我的抱怨更简单的方法。蜂巢思维有答案吗?
您可以查看 Python 的日志记录模块。在这种情况下,也许这就是完美的匹配。
看到你是如何使用print
函数的,文档说你可以像这样重定向到文件:
print(arg, file=open('fname', 'w'))
在 Python3.*
中,要将调用重定向print
到打开的文件对象destination
,
print(arg, file=destination)
在 Python2.*
中, whereprint
是一个语句,语法是
print>>destination, arg
我想你正在使用2.*
,因为在3.*
分配print
的结果不是语法错误(它只是没用,因为结果是None
,但允许)。In2.*
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 中创建了一个文件
接下来我尝试了以下
导入系统
print>>"C:\goat.txt", "test" error AttributeError: 'str' object has no attribute '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'))
我尝试了多种变体,但无法解决这个问题。