python - 进程不等待子进程 python

标签 python popen

我正在开发一个项目,在 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/

相关文章:

python - 如何使用 Python 将多部分 PDF 请求发送到 OneNote

python - 函数的嵌套循环

Python:是否有支持大量隧道的 ssh python 模块?

c - 在 Windows 中使用 system() 或 popen() 调用 gcc 时出错

c++ - 如何使用 pstreams 获得完整的流输出?

python - 如何使用 Wikipedia API 获取图像标题

python - 缺少位置参数

python - 我将如何在 GeoDjango 中编写此查询? (它是 Django 中用于地理计算的库)

Python 使用 Popen 的子进程超时