当我从 python 运行可执行文件并通过争论时,我啥也得不到

Posted

技术标签:

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

这是我要使用的程序的链接: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 上讨论,如果需要,请考虑在那里重播(您不必这样做) 【参考方案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\')

【讨论】:

以上是关于当我从 python 运行可执行文件并通过争论时,我啥也得不到的主要内容,如果未能解决你的问题,请参考以下文章

当我从 SQL Server 代理运行 Python 脚本时,为啥它会失败?

Pyinstaller 可执行文件打开并立即关闭

linux可执行文件不工作,但脚本在python中工作

Python 脚本在 IDE 中有效,但在内置可执行文件时无效?

运行可执行文件时编译着色器时出错

CX_FREEEZE,INNO:找不到 matplotlib 数据文件