python错误代码处理

标签 python subprocess error-code

我想检查安装了什么发行版:

def check_linux():
    if subprocess.call(['apt-get', '-v']) == 0: #if true
        print('apt')
    else:                                       #if false
        print('rpm')

check_linux()
print('done')

当我在 debian 发行版中尝试这个时,一切正常,我得到: stdout 中的“apt”和“done”。但是,如果我在 fedora 上运行此代码,则会出现错误代码并且“完成”不会打印(脚本结束得太早)。 如何解决这个问题?

最佳答案

subprocess.call 如果找不到要运行的可执行文件,则会引发异常,Fedora 和 apt-get 就是这种情况。您可以遍历 PATH 或尝试任何其他常用技巧,但幸运的是 Python 已经具有函数 platform.linux_distribution()在其标准库中,例如:

>>> import platform
>>> platform.linux_distribution()
('CentOS Linux', '7.0.1406', 'Core')

您可以查看它是如何实现的 here .

关于python错误代码处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32189162/

相关文章:

python - 我应该使用 pip.main() 还是 subprocess.call() 来调用 pip 命令?

python - 使用 np.where()[0]

python - 在 Pandas Dataframe 中计算 NaN 但忽略了领先的

python - subprocess.call 无法将标准输出发送到 ffmpeg

Python - 在 subprocess.call 语法中更改工作目录

mysql - 从不同的机器添加 MySQL 架构

shell - 如何通过 shell 脚本调用 oozie 工作流并阻止/等待工作流完成

google-cloud-platform - Google Cloud 服务 "enable billing"错误

python - TensorFlow 传递梯度不变

python - Pandas 验证日期格式