首页 > 解决方案 > 如何在命令中运行带有空格的可执行文件?

问题描述

我正在尝试使用以下命令执行以下命令Popen(shlex.split(cmd)...Popen(cmd.split(' ')...但遇到以下错误,我还能如何运行此命令或如何调试此错误?

def function_create_cmds(cmd):
    print cmd
    #proc = Popen(shlex.split(cmd), shell=True, stdout=PIPE, stderr=PIPE)
    proc = Popen(cmd.split(' '), stdout=PIPE, stderr=PIPE)
    (output, error) = proc.communicate()
    return output,error

cmd = "/usr/local/bin/xbs submitproject -notesfile /Users/usernamea/autosubmissionlogs/07162018_133945/milestone/project-375/project-375.plist  -version project-1.0.7 /Users/usernamea/wifiroots/project Release"
(output,error) = function_create_cmds(cmd)
print output
print error

错误:

Popen(cmd.split(' '),

INFO: submitproject was unable to locate a submission directory named 



Popen(shlex.split(cmd)
xbs requires a command

标签: python

解决方案


不要使用shell=True它不必要地调用一个 shell 来运行你的子进程,因此调用两个进程没有任何好处。

proc = Popen(shlex.split(cmd), stdout=PIPE, stderr=PIPE)

应该管用。如果没有,请提供您在这种情况下遇到的错误。

您总是可以自己拆分命令:

subprocess.Popen([
    "/usr/local/bin/xbs",
    'submitproject',
    '-notesfile',
    '/Users/usernamea/autosubmissionlogs/07162018_133945/milestone/project-375/project-375.plist',
    '-version',
    'project-1.0.7',
    '/Users/usernamea/wifiroots/project',
    'Release',
])

推荐阅读