【发布时间】:2016-08-09 09:29:23
【问题描述】:
我正在我的代码中运行一个应用程序,它会重写我需要稍后在代码中读取的文件。没有输出直接进入我的程序。我不能让我的代码等到子进程完成,它只是继续读取未更改的文件。
我已经尝试过 subprocess.Popen.wait()、subprocess.call() 和 subprocess.check_call(),但它们都不能解决我的问题。有谁知道如何使这项工作?谢谢。
编辑:这是我的代码的相关部分:
os.chdir('C:\Users\Jeremy\Documents\FORCAST\dusty')
t = subprocess.Popen('start dusty.exe', shell=True)
t.wait()
os.chdir('C:\Users\Jeremy\Documents\FORCAST')
【问题讨论】:
-
人们通常抱怨相反;即阻塞子进程。你的代码是什么样的? (将其添加到问题中)
-
也许应用程序产生了一个单独的进程并在这样做后立即返回。
-
我怎么知道是否发生了这种情况,如果发生了,我将如何解决?
-
为什么要在 shell 中启动 exe?你可以直接运行它,不是吗?
-
@Spuds 这两个
subprocess变体中的任何一个都有效吗? pastebin.com/raw/0Usu2f36 您也可以通过subprocess'cwd=/path/to/dir/选项设置当前工作目录。确定需要shell=True? (可能存在安全风险)
标签: python subprocess wait popen