【问题标题】:Handling a command line executable within in Python 2X via subprocess通过子进程在 Python 2X 中处理命令行可执行文件
【发布时间】:2014-12-29 09:49:52
【问题描述】:

我想运行一个通常直接在命令行上运行但最终通过 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>

紧随其后

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

但是,如果我在命令行中输入您通常期望的内容,如果专门使用它会返回:

>>>SyntaxError: invalid token

我已经测试了使用 exe 专门在命令行上输入的内容,它可以正常工作,只是不能通过 Python

我查看了 StackOverFlow,发现最好的比较是在这里How to handle an executable requiring interactive responses?

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

【问题讨论】:

  • 显示完整的回溯(包括代码损坏的行)。注意:用法输出建议等待命令结束运行,您可以:subprocess.check_call(sys.argv[1:4])

标签: python subprocess executable


【解决方案1】:

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多