我们如何使用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解释器
重构@ 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