我在用子流程.Popen启动一个带有参数的外部程序,但当我打开它时,脚本挂起,等待程序完成,如果我关闭脚本,程序将立即退出。在
我以前以为我只是用了一个类似的过程,没有问题,所以我不确定我是否真的做错了,或者我记错了Popen能做什么。这就是我的命令:
subprocess.Popen(["rv", rvFile, '-nc'])
raw_input("= Opened file")
原始的_输入部分只在那里,所以用户有机会看到消息并知道应该现在打开文件。但我最终得到的是进程本身吐出的所有信息,就好像在命令行中直接调用了它一样。我的理解是,Popen将它作为一个独立的子进程,允许我关闭脚本,而让另一个进程保持打开状态。在
对于我的目的来说,链接的重复问题确实有一个有用的答案,尽管它仍然没有按照我想要的那样工作。在
This is the answer.我就是这样更改代码的:
^{pr2}$它可以在空闲状态下工作,但当我通过命令提示符样式的界面运行py文件时就不行了。它仍然绑定到那个窗口,打印输出并在我运行脚本后立即退出程序。在
stackoverflow问题Calling an external command in python有很多相关的有用答案。在
看看^{} ,它可以有很多模式标志,包括NOWAIT,WAIT。在
NOWAIT选项将返回派生任务的进程ID。在
很抱歉这么简短的回答,但我还没有赢得足够的分数来发表评论。无论如何,把
raw_input("= Opened file")
放在实际打开的文件中,而不是放在打开它的程序中。在如果您要打开的文件不是python文件,那么它将在完成时关闭,而不管您从python中声明什么。如果是这种情况,您可以尝试使用以下方法将其与父对象分离:
这是专门用于将python脚本作为命令行进程运行的,但我最终通过组合人们建议的两个答案来实现这一点。在
使用this answer中建议的分离进程组合可以通过IDLE运行它,但是命令行接口。但是使用shell=True(正如ajsp建议的那样)和分离的_进程参数,它允许我关闭python脚本窗口,让另一个程序仍在运行。在
相关问题 更多 >
编程相关推荐