使用python运行windows shell命令

时间:2013-02-15 11:29:44

标签: python windows operating-system shell

我们如何使用Python与OS shell进行交互? 我想通过python运行windows cmd命令。如何实现?

5 个答案:

答案 0 :(得分:56)

较新的subprocess.check_output和类似命令应该替换os.system。有关详细信息,请参阅this page。虽然我无法在Windows上测试,但以下情况应该有效:

from subprocess import check_output
check_output("dir C:", shell=True)

check_output返回命令输出的字符串。或者,subprocess.call只运行命令并返回命令的状态(如果一切正常,通常为0)。

另请注意,在python 3中,该字符串输出现在是bytes输出。如果要将其更改为字符串,则需要类似

的内容
from subprocess import check_output
check_output("dir C:", shell=True).decode()

如有必要,you can tell it程序输出的编码类型。默认值为utf-8,通常可以正常使用,但其他标准选项为here

答案 1 :(得分:12)

您可以使用os模块system method

你只需输入命令的字符串形式,返回值是windows enrivonment变量COMSPEC

例如:

os.system('python')打开windows命令提示符并运行python解释器

os.system('python') example

答案 2 :(得分:10)

重构@ srini-beerge的答案,获取输出和返回码

import subprocess
def run_win_cmd(cmd):
    result = []
    process = subprocess.Popen(cmd,
                               shell=True,
                               stdout=subprocess.PIPE,
                               stderr=subprocess.PIPE)
    for line in process.stdout:
        result.append(line)
    errcode = process.returncode
    for line in result:
        print(line)
    if errcode is not None:
        raise Exception('cmd %s failed, see above for details', cmd)

答案 3 :(得分:2)

您可以将subprocess包与代码一起使用,如下所示:

import subprocess
cmdCommand = "python test.py"   #specify your cmd command
process = subprocess.Popen(cmdCommand.split(), stdout=subprocess.PIPE)
output, error = process.communicate()
print output

答案 4 :(得分:1)

import subprocess
result = []
win_cmd = 'ipconfig'(curr_user,filename,ip_address)
process = subprocess.Popen(win_cmd,
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE )
for line in process.stdout:
    print line
result.append(line)
errcode = process.returncode
for line in result:
    print line