python - 为什么 commands.getstatusoutput 不起作用?
问题描述
我想研究一下 linux VM 是否安装了 XY 包。输出为 1,但在 if 语句之后没有打印 XY 已安装。你能给我一些想法我该如何解决这个问题。
import os
import commands
status, output = commands.getstatusoutput("rpm -qa | grep XY |wc -l")
if(output==1):
print("XY is installed on this pc")
解决方案
的输出wc
是一个字符串;它永远不能等于整数。你可以转换它,或者比较它'1'
,但无论如何这都是无用的wc
。
更好的方法是只将rpm
命令作为子进程运行,并使用简单的本机 Python 片段检查其输出。
import subprocess
if 'XY' in subprocess.check_output(['rpm', '-qa']):
print('XY is installed')
这有点容易出现误报,因为您正在检查输出的任何部分是否包含'XY'
任何地方的子字符串。如果您已安装libXY-dev
或ABCXYZ
已安装,它将错误地声称您已安装XY
. 最好只查询 RPM 以了解此特定包的状态;但希望这至少能让你开始。
或许还要注意这如何避免一个总是胜利的 shell,特别是如果你对 shell 及其陷阱不太熟悉的话。
推荐阅读
- r - 滤波器lm系数汇总模型
- amazon-web-services - AWS Athena 附带 Athena 联合查询
- mysql - 使用日期顺序创建一个新表(现有的副本)
- python - 不规则分布的热图
- sql - 在分页的同时获取所有页面的第一行(LIMIT / OFFSET)
- powerbi - 在 PowerBI 桌面上访问问答?
- python - BotFramework Composer,在技能回调时收到 404 错误
- aframe - 如何在 AR.JS 中使画布全屏
- amazon-s3 - 如何通过 CLI 关闭 AWS s3 存储桶中对象的加密?
- html - spring 中的等效布局(asp.net 核心)是什么?