2

所以可以说我有一个非常嵌套的列表/字典迭代。我想尽可能轻松地将它们打印到文件中。为什么我不能将打印重定向到文件?

val = print(arg) 得到一个语法错误。

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

为什么打印需要永远使用大量字符串?我的编程很糟糕,无法输出大量字符串,但调试速度很快——这不是利用了交互式提示的优势吗?

可能还有比我的抱怨更简单的方法。蜂巢思维有答案吗?

4

5 回答 5

2

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

于 2010-03-19T12:10:25.147 回答
1

看到你是如何使用print函数的,文档说你可以像这样重定向到文件:

print(arg, file=open('fname', 'w'))
于 2010-03-19T12:04:59.963 回答
1

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

print(arg, file=destination)

在 Python2.*中, whereprint是一个语句,语法是

print>>destination, arg

我想你正在使用2.*,因为在3.*分配print的结果不是语法错误(它只是没用,因为结果是None,但允许)。In2.* print是一个语句,而不是一个函数,所以你给出的代码片段确实是一个语法错误。

我不确定这个任务应该是什么意思。如果您想重定向一个或多个print语句(或调用)以将格式化结果作为内存中的字符串,您可以设置sys.stdoutStringIO(或cStringIO)实例;但是您特别提到了“到文件”,所以我对该作业的预期含义感到非常困惑。请澄清一下?

于 2010-03-19T14:34:21.377 回答
1

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

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

如果print要永远显示一个巨大的字符串,这可能不是完全print的错,而是必须将所有内容显示到屏幕上的结果。

于 2010-03-19T17:27:17.273 回答
0

我使用 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'))

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

于 2010-11-05T22:38:26.920 回答