我需要执行一个带有参数的exe文件,该参数读取文件,进行一些计算并生成3个新文件。使用subprocess.Popen
可以正常工作。但是为了检查它的执行情况,我使用了wait()
。但是,当使用wait()
时,该过程将无法进行,并且不会生成任何文件。我什至签入了任务管理器。该过程通常需要5秒钟才能完成,但是如果使用wait()
,该过程将在一秒钟内结束。有人可以帮我吗?
process = subprocess.Popen(span_command, shell=True)
单独使用上面的代码片段可以正常工作,但是如果与process.wait()
一起使用,该过程将停止。
答案 0 :(得分:-1)
需要有关已执行程序的更多信息。
我认为您的程序在stdin
关闭时结束。
例如,Windows上的date
会期望输入并在收到一些输入时完成输入。
p2 = subprocess.Popen(["date"], stdout=subprocess.PIPE ,shell=True)
print(p2.returncode)
time.sleep(10)
print(p2.returncode)
print(p2.wait())
print(p2.returncode)
这可能是您的解决方案。等待一段时间,然后再致电wait
。
但是最好知道该程序如何对不同的输入做出反应并以stdin=subprocess.PIPE
和p2.communicate("some expected input")
运行。
检查正在运行的程序的输出。
p2 = subprocess.Popen(["date"], stdout=subprocess.PIPE, stderr=subprocess.PIPE ,shell=True)
print(p2.wait())
print(p2.stdout.readlines())
print(p2.stderr.readlines())
这不是解决方案,而是调试过程。
没有理由不使用您提供的代码。 所以这是您没有给我们看的东西。首先怀疑是您正在运行的程序。