Mac下的Python 2子过程参数错误

西蒙·塞恩(Simon TheChain)

我正在尝试使用python 2.7做一个Mac版本的程序,该程序在Windows下可以正常运行。在Mac(在VirtualBox中运行的OS X El Capitan)下,由于无法正确识别我传递给Shell的参数,因此失败。

原始代码:

for item in source_files:

    # core process
    output = sub.Popen(["mhl", "verify", "-vv", "-f", item, ">", text_report],
                       shell=True,
                       stdout=sub.PIPE,
                       stderr=sub.PIPE)
    stdout_value, stderr_value = output.communicate()

在Mac下,只能识别'mhl'参数,因此我尝试了以下操作:

sub.Popen(['mhl verify -vv -f', item, '>', text_report]

现在该命令可以使用,但是无法识别该项目(.mhl文件),因此我尝试了以下操作:

sub.Popen(['mhl verify -vv -f', '/Users/simon/Documents/Documents.mhl', '>', text_report]

和这个:

sub.Popen(['mhl verify -vv -f', r'/Users/simon/Documents/Documents.mhl', '>', text_report]

同样的结果,它告诉我mhl文件应该跟随'-f'参数。如果我将项目直接添加到第一个参数,则可以正常工作:

sub.Popen(['mhl verify -vv -f /Users/simon/Documents/Documents.mhl', '>', text_report]

我在这里想念什么?

马丁·彼得斯(Martijn Pieters)

您正在要求操作系统运行可执行文件'mhl verify -vv -f',并且没有这样的可执行文件。在该处的空间上不会发生外壳分裂的情况。

随着shell=True你想要的一切传递作为一个字符串,而不是作为单独的参数:

sub.Popen('mhl verify -vv -f {} > {}'.format(item, text_report),
          shell=True, stdout=sub.PIPE, stderr=sub.PIPE)

请注意,这里指向stdout管道的意义不大,因为mhl命令的所有stdout输出都将重定向到文件。

如果您想mhl直接在Python中捕获命令的输出,则在这里我不使用Shell中介程序。运行时不shell=True使用,然后仅用于subprocess.check_output()检索输出:

output = sub.check_output(['mhl', 'verify', '-vv', '-f', item])

请注意,现在必须将程序名称和参数以立即拆分的方式传递到单独的字符串中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python类参数错误

Python多线程参数错误

参数错误行为docopt python

python object()没有参数错误

python3类参数错误

python:object()没有参数错误

python:先验函数错误生成的参数

Python PDF Randomizer 位置参数错误

module .__ init __()在Python中最多接受2个参数错误

Python中的语音识别错误(位置参数错误)

VBA;无效的过程或参数错误

使用 Python 访问 aws ecr 时的参数错误

Python Click:如果设置了标志,则忽略丢失的参数错误

如何将参数传递给python函数错误

调用过程时错误的数量或类型的参数错误

我无法传递参数错误:无法识别的参数:Argparse Python3

VBA 中的无效过程调用和参数错误

python变量作为子过程中的参数

在不使用python的情况下将py2app应用程序发送到Mac

当只有一个时,Python抛出多个参数错误

当没有给出参数错误时,Python 类自变量作为默认值

使用lamda函数错误的Python缺少1个必需的位置参数:'event'

Python Class()没有参数错误。我正在使用Self

在python中读取json值时出现无效的参数错误

使用MySQL Insert命令运行python时出现参数错误

在VS代码中调试Python脚本时出现无法识别的参数错误

在python中使用“使用std :: vector”时出现SWIG参数错误

运行rdkit.Chem.SaltRemover()时发生Python参数错误。(Python参数类型与C ++签名不匹配)

2CheckOut-错误:错误的请求-参数错误