使用cmd.exe调用子进程的示例

时间:2014-12-11 22:56:48

标签: python

我希望/尝试使用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没有结束。什么是好的方式。

2 个答案:

答案 0 :(得分:1)

调用cmd.exe并不是一种非常可靠的方法,我几乎可以肯定你无法正确地与之通信。

如果您想要检索系统版本,可以使用:

在我的机器上调用

>>> import platform
>>> platform.platform()
'Linux-3.17.4-1-ARCH-x86_64-with-glibc2.2.5'

在某些Windows计算机上调用

>>> 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)