1

我有一个关于将屏幕输出重定向到单个文件的问题。这是我打印屏幕输出的代码:

for O,x,y,z,M,n in coordinate:
    print(O,x,y,z,M,n)

屏幕输出如下所示:

O 0 0 0 ! 1
O 1 0 0 ! 2 
O 2 0 0 ! 3

那么如何将所有数据重定向到一个文件中并以相同的格式,就像屏幕输出一样。因为获取所有数据而不是等待屏幕输出完成会更快。我试过for point in coordinate: file.write(' '.join(str(s) for s in point))但输出文件变成:

O 0 0 0 ! 0O 1 0 0 ! 1O 2 0 0 ! 2O 3 0 0 ! 3O 4 0 0 ! 4O 5 0 0 ! 5O 6 0 0 ! 6O
4

4 回答 4

2

最简单的方法不是在 Python 中完成,而是让操作系统为您完成。这适用于 Linux 和 Windows 命令提示符。

python myprog.py >output.txt
于 2013-09-17T01:58:41.893 回答
1

函数调用file.write(*point)本质上获取point列表中的每个元素,并将函数调用修改为如下所示file.write(p1, p2, p3, p4, ...)

然而,file.write它只接受一个参数——一个字符串。这意味着您需要将point列表转换为字符串。

它可能最终看起来像这样:

with open('substrate', 'w') as file:
    for point in coordinate:
        file.write(' '.join([str(p) for p in point])
于 2013-09-16T22:28:49.003 回答
1

尝试

with open('substrate', 'wb') as file:
    file.write('\n'.join(' '.join(str(p) for p in point)) for point in coordinate)

如果你想知道为什么wb?看到这个问题

如果您想接受Mark Ransom的答案,我相信您在代码中就是这样做的:

from sys import stdout
stdout.write('\n'.join(' '.join(str(p) for p in point)) for point in coordinate)
于 2013-09-16T22:29:49.840 回答
0

不完全确定你在找什么,所以我要走两条路。

for coordset in coordinate:
    for point in coordset:
        file.write(point)

或者,如果您想要格式化,您可以使用格式化字符串。

for coordset in coordinate:
    file.write('%s,%s,%s,%s,%s,%s' % set)

如果我有误解,您可以澄清您的帖子。

于 2013-09-16T22:28:29.847 回答