从python运行shell命令
我想自动检查机器上是否安装了某些KB。 我的python脚本的一部分:从python运行shell命令,python,shell,cmd,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() i
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”又导致了大量错误)。
一些建议?以下是您问题的一部分:
print('Nah, you don't have KB')
应该是
print("Nah, you don't have KB")
尝试将所有组件分离到列表中的元素中 替换:
result = subprocess.run(['cmd', '/c wmic qfe'], shell=True, stdout=subprocess.PIPE)
与
result = subprocess.run(['cmd', '/c', 'wmic', 'qfe'], shell=True, stdout=subprocess.PIPE)
'Nah,你没有KB'
中的单引号是打字错误吗?但是命令从cmd成功执行了吗?因此,导致错误的仅仅是python脚本?另外,wmic path win32_quickfixengineering get KB2999226
working?1)消息是俄语的,没有像“don't”这样的规范字符。2) 来自cmd的命令也会出现相同的错误。3) `result=subprocess.run([“cmd”、'/c dism/Online/Get Packages'],shell=True,stdout=subprocess.PIPE)-在result.stdout中返回一些不可读的文本,而
dism/Online/Get Packages`在cmd中工作得非常好。我不喜欢在错误消息中出现单引号。确实是qfe”-别名未找到。
和都不是“qfe”-别名未找到。
?在后一种情况下,如果您从命令行cmd/c wmic qfe
输入,会发生什么?事实上,此消息是俄语的,没有特殊字符,如“'“.所以,是的,我的坏-不正确的例子是有意义的,并清除了一些混乱。否则,您将得到与输出完全相同的语法错误(您没有看到)