在我的旧python脚本中,我使用以下代码显示Windows cmd命令的结果:
print(os.popen("dir c:\\").read())
正如python 2.7文档所说,os.popen
已过时,建议使用subprocess
。我按照文档:
result = subprocess.Popen("dir c:\\").stdout
我收到错误消息:
WindowsError: [Error 2] The system cannot find the file specified
您能告诉我使用subprocess
模块的正确方法吗?
答案 0 :(得分:4)
您应该使用subprocess.Popen
拨打shell=True
,如下所示:
import subprocess
result = subprocess.Popen("dir c:", shell=True,
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output,error = result.communicate()
print (output)
答案 1 :(得分:0)
这在Python 3.7中有效:
from subprocess import Popen, PIPE
args = ["echo", "realtime abc"]
p = Popen(args, stdout=PIPE, stderr=PIPE, shell=True, text=True)
for line in p.stdout:
print("O=:", line)
。
输出:
O =:“实时abc”
答案 2 :(得分:-1)
尝试:
p = subprocess.Popen(["dir", "c:\\"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
outputs = p.communicate()
请注意,communicate()
会返回元组(stdoutdata, stderrdata)
,因此outputs[0]
是stdout
条消息,outputs[1]
是stderr
消息。