当我从 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
我该如何解决这个问题?
【问题讨论】:
--in
和 x.ply
实际上是单独的参数,用于 shell 目的。同样-out
和x.txt
。另外,真的是双破折号进单破折号吗?
稍微猜测 - 将论点分开? args = ['C:\\Path\\ShapeDescriptor.exe', "--in", "x.ply", "-out", "x.txt" ]
。子流程应该可以处理。
@mattbornski 它也是双破折号,抱歉我用双破折号,但它不起作用
@asongtoruin 没用
@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 脚本时,为啥它会失败?