我想写Python脚本。我是个新手。在这个脚本中,我想运行另一个C程序,它在输出中给出许多数字。Smth类:
1 1 0.000000 0.000172 0.075010 0.937330 33.743876
我想用其他参数多次运行这个程序,并在一个文件中收集所有输出。之后,我计划使用pandas
对数据进行排序并绘制一些图,但现在这并不重要。我写了以下代码:
(小数字只是为了给你看)。我希望我的ax-rrff.dat
是
seed N T DRA D Active AvF
1 1 0.000000 0.000172 0.075010 0.937330 33.743876
1 2 0.000000 0.003598 0.021690 1.564677 14.032332
2 1 0.000000 0.000172 0.062262 0.925817 33.329404
2 2 0.000000 0.002790 0.014749 1.423670 16.689964
但是,编译器的调度器认为这样输出会很酷:
1 1 0.000000 0.000172 0.075010 0.937330 33.743876
1 2 0.000000 0.003598 0.021690 1.564677 14.032332
2 1 0.000000 0.000172 0.062262 0.925817 33.329404
2 2 0.000000 0.002790 0.014749 1.423670 16.689964
seed N T DRA D Active AvF
这个问题。如何强制子进程在f.write("seed\tN\tT\tDRA\tD\tActive\tAvF\n")
之后运行?在
好吧,我上午好手机无法测试我的答案,但我想您的预期输出可以这样实现:
但有一件事还不清楚。。因为您在for循环外声明了
p
,然后又在循环内部声明了一次。。这使我相信您愿意使用第一个声明作为第二个声明的输入。。但是,您所做的只是做一个新的声明,从而覆盖第一个声明。所以您正在更改p
是什么,而不是以任何方式使用/执行它。。在进一步说明:
我将}模式。这允许你写任何你想写的频率,它将按写入文件的顺序添加每一行从内部你的python脚本。在
open(file, 'w')
改为open(file, 'a')
,这意味着文件将是append
模式,而不是{如果您仍然想使用
p
的第一个声明作为第二个声明的输入,请查看是否可以通过将插入到for循环中的子进程中的命令行命令进行扩展。在问题是
write()
将输出放在缓冲区中,并且只定期将缓冲区刷新到磁盘。由于有多个进程正在写入文件,因此它们可能在父进程之前刷新自己的缓冲区。要强制输出,只需在启动任何子进程之前调用f.flsuh()
。在相关问题 更多 >
编程相关推荐