我们如何可以使用Python OS壳互动? 我想通过Python运行CMD命令窗口。 怎样才能实现?
Answer 1:
较新的subprocess.check_output
和类似的命令都应该更换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
通常工作得很好,但其他标准选项是在这里 。
Answer 2:
你可以使用os模块的系统方法 。
你只要把在命令字符串形式,返回值是windows enrivonment变量COMSPEC
例如:
使用os.system(“蟒”)打开了Windows命令提示,并运行python解释
Answer 3:
@作者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)
Answer 4:
您可以使用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
Answer 5:
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
文章来源: Running windows shell commands with python