我希望/尝试使用2个命令运行cmd.exe:“ver”,然后“exit”,
from subprocess import Popen, PIPE
def do_process(command, text):
pro = Popen(command, stdout=PIPE, stdin=PIPE, stderr=PIPE)
out, err = pro.communicate(text.encode())
return out
do_process(['cmd.exe'], 'ver\nexit\n')
它无法返回输出,似乎cmd.exe没有结束。什么是好的方式。
答案 0 :(得分:1)
调用cmd.exe
并不是一种非常可靠的方法,我几乎可以肯定你无法正确地与之通信。
如果您想要检索系统版本,可以使用:
>>> import platform
>>> platform.platform()
'Linux-3.17.4-1-ARCH-x86_64-with-glibc2.2.5'
>>> import platform
>>> platform.platform()
'Windows-7-6.1.7601-SP1'
答案 1 :(得分:0)
我在我的函数中犯了错误,我需要decode
结果(我在我的操作系统上使用cp866):
def do_process(command, text):
enc = 'cp866'
p = Popen(command, stdout=PIPE, stdin=PIPE, stderr=PIPE)
out, err = p.communicate(text.encode())
return out.decode(enc)