python - 与 Python 子进程的混淆

标签 python subprocess

我正在尝试从 Python 中运行一些外部可执行代码,然后使用输出。我正在使用的代码接受一个外部文件并返回一个数字(该文件中编码的图像数量)。当我从命令行运行时,我看到以下内容:

me@ubuntu:~/nist/hsfsys/bin$ ./nummis  /usr/local/hsfsys/data/by_class/4a/train_4a.mis 
3962

据我所知,3962 是一个正确的输出

但是,当我尝试在 Python 中使用子进程时,出现以下错误:

me@ubuntu:~/nist/hsfsys/bin$ python
Python 2.7.3 (default, Apr 20 2012, 22:39:59) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> subprocess.check_output(["./nummis","/usr/local/hsfsys/data/by_class/4a/train_4a.mis"])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/subprocess.py", line 544, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['./nummis', '/usr/local/hsfsys/data/by_class/4a/train_4a.mis']' returned non-zero exit status 32
>>> subprocess.call(["./nummis","/usr/local/hsfsys/data/by_class/4a/train_4a.mis"])
3962
32

我应该如何解释这个“非零退出状态32”?如果出现问题,为什么我在命令行上看不到它?如果没有任何问题,为什么 Python 会提示?我怎样才能让它停止提示?

最佳答案

命令行仅在明确要求时报告退出状态。

从命令行调用程序后,尝试

echo $?

为了显示退出状态。如果它也显示32,那么就是被调用的程序有问题。它无法在其 main() 中正确地 return 0;return EXIT_SUCCESS;

关于python - 与 Python 子进程的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11338415/

相关文章:

python - 如何抓取动态网页,api url返回null?

python - 当我需要数据时返回生成器对象

python - PyAPNS SSL3_WRITE_PENDING 错误

Python 采购 CSH 并将 setenv 传递给新的子进程

返回输出前在后台运行的 Python 子进程

python - 如何在 Python 中将 3 维数组(在本例中为滤波器组)与 2 维图像(单色)进行卷积?

python - subprocess.call 在 Windows 上使用 cygwin 而不是 cmd

Python - 使用子进程的 Hive 命令 - 空结果

python - 命令在 CMD 中有效,但在子进程中无效

python - Python遍历灰度图像中的连接组件