我有一个关于将屏幕输出重定向到单个文件的问题。这是我打印屏幕输出的代码:
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
答案 0 :(得分:2)
最简单的方法是不要在Python中使用它,而是让操作系统为您完成。这适用于Linux和Windows命令提示符。
python myprog.py >output.txt
答案 1 :(得分: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])
答案 2 :(得分:1)
尝试
with open('substrate', 'wb') as file:
file.write('\n'.join(' '.join(str(p) for p in point)) for point in coordinate)
如果您想知道为什么wb
?见this question
如果您想使用Mark Ransom
的答案,我相信您就是这样做的代码:
from sys import stdout
stdout.write('\n'.join(' '.join(str(p) for p in point)) for point in coordinate)
答案 3 :(得分: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)
如果我误解,你可以澄清你的帖子。