Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从python运行shell命令_Python_Shell_Cmd - Fatal编程技术网

从python运行shell命令

从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

我想自动检查机器上是否安装了某些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”又导致了大量错误)。
一些建议?

以下是您问题的一部分:

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
输入,会发生什么?事实上,此消息是俄语的,没有特殊字符,如“'“.所以,是的,我的坏-不正确的例子是有意义的,并清除了一些混乱。否则,您将得到与输出完全相同的语法错误(您没有看到)