用python运行windows shell命令

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

较新的os.system和类似的命令应该取代os.system 详情请参阅此页面 。 虽然我无法在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() 

如果有必要, 你可以告诉它你的程序输出的编码类型。 默认是utf-8 ,通常工作正常,但其他标准选项在这里 。

您将使用os模块系统方法 。

你只要把命令的字符串形式,返回值是Windows启动变量COMSPEC

例如:

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

os.system('python')的例子

重构@ 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) 
 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 

您可以使用代码如下的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