从python运行shell命令

时间:2018-02-20 06:25:04

标签: python shell cmd

我想自动检查机器上是否安装了某些KB。 我的python脚本的一部分:

import subprocess
result = subprocess.run(['cmd', '/c wmic qfe'], shell=True, stdout=subprocess.PIPE)
ftemp = open('mylog.txt','w') #just to check what is going wrong
ftemp.write(str(result.stdout))
ftemp.close()
if str(result.stdout).find('KB2999226')==-1:
    print('Nah, you don't have KB')
    sys.exit()

执行时我在shell中得到了什么:

qfe" - Alias not found.
Nah, you don't have KB

mylog.txt:指定

b''

所以,看起来像破折号或编码的一些愚蠢的问题。我尝试了各种各样的命令,但没有成功。 (是的,“dism”会导致另外一些错误)。 一些建议?

2 个答案:

答案 0 :(得分:2)

以下是您问题的一部分:

print('Nah, you don't have KB')

应该是

print("Nah, you don't have KB")

答案 1 :(得分:2)

尝试将所有组件分成列表中的元素。

<强>替换

result = subprocess.run(['cmd', '/c wmic qfe'], shell=True, stdout=subprocess.PIPE)

<强>与

result = subprocess.run(['cmd', '/c', 'wmic', 'qfe'], shell=True, stdout=subprocess.PIPE)