通过子进程处理Python 2X中的命令行可执行文件

时间:2014-12-29 09:49:52

标签: python subprocess executable

我想运行一个通常直接在命令行上运行但最终通过Python脚本运行的可执行文件。 我在阅读完这里后使用了subprocess.Popen和多个Google搜索结果,取得了一些有限的成功。

>>>import subprocess
>>>exe_path = sys.argv[1]
>>>dir_path_in = sys.argv[2]
>>>dir_path_out = sys.argv[3]
>>>subprocess.Popen([exe_path])

然后显示

<subprocess.Popen object at 0x021B7B30>

其次是

>>>usage: <path to exe> [options] <dir_path> <dir_path_out>

但是如果我在命令行输入您通常期望的内容(如果单独使用它),则返回:

>>>SyntaxError: invalid token

我已经测试了使用exe在命令行上输入的内容,它只能通过Python

工作正常

我看过StackOverFlow,我发现最好的比较是How to handle an executable requiring interactive responses?

最终&#34;用法&#34;由于声明的sys.argvs将提供可执行文件自动运行所需的所有信息,因此最终甚至不需要part。

1 个答案:

答案 0 :(得分:0)

subprocess.call()通过声明argv变量然后连接变量并在subprocess.call()中使用最终变量而不是使用我首次尝试的shlex.split()来实现所需的结果。即使使用'\'为Windows转义

,也会遇到路径问题
import subprocess
exe_path = sys.argv[1]
dir_path_in = sys.argv[2]
dir_path_out = sys.argv[3]
command = exe_path, dir_path_in, dir_path_out
p = subprocess.call(command)