'{'不被识别为内部或外部命令,可操作程序或批处理文件

时间:2012-10-17 14:49:07

标签: python

在Windows上运行,以下Python程序生成上述输出(输出变量的内容)

import commands

cmd = "dir"
(output) = commands.getoutput(cmd)
print output

非常有趣且令人沮丧。有人能指点我解释一下吗?

1 个答案:

答案 0 :(得分:8)

请参阅documentation

  

cmd实际上是以{cmd; } 2>& 1

{来自哪个地方。您应该使用subprocess代替。

import subprocess
p = subprocess.Popen(['dir'],stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
stdout,stderr = p.communicate()

在这种特定情况下需要shell=True,因为dir是内部DOS命令。通常,应该提供可执行文件的完整路径并保持shell禁用。