我正在开发一个项目,在 Windows 上处理外部可执行文件。我正在使用 Popen 与外部可执行文件交互。
工作流程如下:命令 -> .exe -> output_files -> read_outputfiles
命令将按预期发送到 .exe 文件,但是创建的进程不会等待命令执行,因此不会生成输出文件。我已经尝试过 time.sleep(1) 但没有效果。我注意到输出文件仅在 python 代码终止时写入。
for i in range(0, len(commands)):
process.stdin.write(commands[i])
#out, err=process.communicate()
#print err
#process.terminate()
#Reading AVL output files
# Open AVLaero.dat
fid = open('AVLaero.dat', 'r')
AVLaero=fid.read()
fid.close()
process.terminate()
在找不到 AVLaero.dat 时引发异常后,一旦程序终止,就会写入文件。
为了测试这是否是由 avl.exe 文件引起的,我添加了一个无限 while 循环,以保持 python 代码运行,同时为 avl.exe 提供写入时间。但是,这并没有导致输出文件被写入。
我正在使用 Parallels Desktop 在虚拟机上运行 Windows...
最佳答案
在继续执行 python 程序之前,您不会等待进程终止。你应该process.wait()
让它完成。在与流程通信后添加该内容,或使用 process.communicate()
,位于注释中(并自动调用 wait()
)应该具有所需的功能。
关于python - 进程不等待子进程 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32467172/