【发布时间】:2017-11-15 07:44:26
【问题描述】:
我需要从我的 Python 脚本中调用一个可执行文件并恢复其输出。所以我这样做:
command = executable + ' -a something ' + variable + ' -b somethingElse'
output = subprocess.check_output(shlex.split(command),shell=True)
当我执行此操作时,我收到错误 127。问题可能与参数的大小有关:最终执行的字符串长度超过 1300 个字符。但奇怪的是,如果我将该字符串复制粘贴到 shell 中并执行它,那么它可以完美运行。 Python中是否有我不知道的限制?我想我可以设计其他解决方案,但是 (a) 我更喜欢这个,并且 (b) 我对这个问题很好奇。
【问题讨论】:
-
executable包含什么 - 只是程序名称还是完整路径? -
为什么要拆分字符串而不是直接将参数作为
list传递? -
@Błotosmętek 它包含可执行文件的完整(绝对)路径
-
@Jean-FrançoisFabre 没有特别的原因......这只是我在所有其他情况下都遵循的方法(这种方法工作得很好)
-
您应该使用正确的代码edit您的问题并回答您自己的问题,而不是使用“已解决”来编辑您的问题。那会很有趣。我知道
shell=True不好,应该避免,但我不知道它会影响命令行的大小。这样做你会得到一些支持。
标签: python shell subprocess command-line-arguments