check_output的参数太长了?失败,错误127

时间:2017-06-13 13:30:44

标签: python shell subprocess command-line-arguments

我需要从Python脚本中调用可执行文件并恢复其输出。所以我这样做:

command = executable + ' -a something ' + variable + ' -b somethingElse'
output = subprocess.check_output(shlex.split(command),shell=True)

当我执行此操作时,我得到一个错误127.问题可能与参数的大小有关:执行的最终字符串长度超过1300个字符。但奇怪的是,如果我将该字符串复制粘贴到shell中并执行它,那么它可以完美地工作。我不知道Python中有限制吗?我想我可以设计其他解决方案,但(a)我更喜欢这个和(b)我对这个问题感到好奇。

1 个答案:

答案 0 :(得分:1)

删除shell=True(无论如何都不需要)解决了参数长度问题。

获得的经验:不要使用shell=True,除非你不能做任何事情(即使在那种情况下,可能还有更好的解决方案)