我试图编写一个程序,让用户选择各种选项,这些选项将有助于命令在python中的单独窗口中运行。在这个子进程完成后,我希望它退出并返回特定命令的输出。下面是我的代码片段:
if(fileName == "" or className == ""):
tkMessageBox.showinfo("Error", "Please select a test class/test!")
else:
command = "ctetest"
if(verbose.get()):
command += " -v"
if(xml.get()):
command += " -x"
if(version.get()):
command += " -V"
if(output.get()):
command += " -o"
command += " RegressionTest/"
command += folderName + " " + fileName + "." + className + "." + methodName
processOutput = subprocess.Popen('start '+command, shell = True)
processOutput.wait()
processOutput.terminate()
问题是,当子进程完成时,它只是挂在那里,我必须手动关闭它。一旦我手动关闭它,它似乎不会生成子进程生成的任何输出。我试过用
^{pr2}$以及
^{3}$但同样的问题也出现了。我唯一能想到的解决办法是使用线程,但是在我终止它之前,我如何检查子进程是否真的完成了呢?我还有别的办法可以完成这个任务吗?提前谢谢!在
subprocess
需要您传递的参数与您所做的不同,您需要创建一个由要运行的程序及其参数组成的列表。例如["ls", "-l", "/home"]
。在你的代码应该是:
这将使用
list.append()
创建命令和参数列表。它将自动等待子进程完成,并在processOutput
变量中提供整个输出。在相关问题 更多 >
编程相关推荐