2012-06-20 99 views
1

我写了两个脚本,其中一个脚本调用subprocess.Popen来运行终端命令来执行第二个脚本。等待5秒后,它将终止子过程。Python子流程执行脚本不会写入文件

在子进程中,我有一个while循环轮询一个寄存器,并将该寄存器的内容写入一个文件。

我使用的方法是

f = open(filename, 'w') 
... 
while 1: 
    *poll register* 
    f.write(fp0) 
    sleep(1) 

每当我运行该脚本与while循环单独存在,它的寄存器的内容写入文件。但是,当我执行主脚本并执行轮询脚本作为子进程时,它不会在文件终止后写入该文件。

任何人都可以提供任何建议的问题?

回答

1

使用的上下文对文件的开放,和你睡觉前添加一个右对齐:

with open(filename, 'w') as f: 
    ... 
    while 1: 
     *poll register* 
     f.write(fp0) 
     f.flush() 
     sleep(1) 
+0

谢谢你,这个工作非常适合我! – maknelly

0

由于您正在终止子流程,因此可能不会将输出刷新到文件。 尝试调用f.flush()以确保输出写入文件。