【问题标题】:When I run executable from python and pass the arguements I get nothing当我从 python 运行可执行文件并通过争论时,我什么也得不到
【发布时间】:2026-02-06 13:15:01
【问题描述】:

这是我要使用的程序的链接:http://www.cs.jhu.edu/~misha/Code/ShapeSPH/ShapeDescriptor/,我想使用以下命令通过 python 运行

import subprocess
args = ['C:\\Path\\ShapeDescriptor.exe', "--in", "x.ply", "--out", "x.txt" ]
subprocess.call(args, shell=True) 

但是当我运行它时,我会得到类似的东西:

#QNAN0 1.#QNAN0 1.#QNAN0 -1.#IND00

我可以从命令提示符运行 ShapeDescriptor.exe:

ShapeDescriptor.exe --in x.ply -out x.txt

并获取所需的带有数字的 x.txt 文件,例如:

0.003294 0.003386 0.003426 0.001029

我该如何解决这个问题?

【问题讨论】:

  • --inx.ply 实际上是单独的参数,用于 shell 目的。同样-outx.txt。另外,真的是双破折号进单破折号吗?
  • 稍微猜测 - 将论点分开? args = ['C:\\Path\\ShapeDescriptor.exe', "--in", "x.ply", "-out", "x.txt" ]。子流程应该可以处理。
  • @mattbornski 它也是双破折号,抱歉我用双破折号,但它不起作用
  • @ason​​gtoruin 没用
  • @edyvedy13 您正在meta 上讨论,如果需要,请考虑在那里重播(您不必这样做)

标签: python sys matlab-compiler


【解决方案1】:

如果拆分不起作用,您可能还想使用 cwd 参数提供一个工作目录。也许 x.txt 是在一个意外的位置创建的。

【讨论】:

    【解决方案2】:

    尝试将 subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False) 与选项或 subprocess.check_call(args, *, stdin=None, stdout=None,标准错误=无,外壳=假)。

    不同的是,如果进程返回错误码,check_call 会得到 CalledProcessError。

    另一种策略是使用chdir函数改变当前执行exe文件的目录,如下:

    导入操作系统

    os.chdir('c:\documents and settings\programs\')

    【讨论】:

      最近更新 更多