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

通过子流程处理Python 2X中的命令行可执行文件,python,subprocess,executable,Python,Subprocess,Executable,我想运行一个通常直接在命令行上运行但最终通过Python脚本运行的可执行文件。 在通读了这里和多个Google结果之后,我使用subprocess.Popen获得了一些有限的成功 >>>import subprocess >>>exe_path = sys.argv[1] >>>dir_path_in = sys.argv[2] >>>dir_path_out = sys.argv[3] >>>subpro

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

>>>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>
我已经用exe测试了只在命令行中输入的内容,它运行良好,只是没有通过Python

我已经看过StackOverFlow,我发现最好的比较是在这里

最终,甚至不需要“用法”部分,因为声明的sys.argvs将提供自动运行可执行文件所需的所有信息。

子流程.call()通过声明argv变量,然后连接变量,并在子流程.call()中使用最后一个变量,实现了所需的结果与使用shlex.split()相反,我第一次尝试使用shlex.split()

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)
显示完整的回溯(包括带有断开代码的行)。注意:用法输出表明,要在命令结束前运行命令,可以:
subprocess.check\u调用(sys.argv[1:4])
>>>SyntaxError: invalid token
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)