3

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

import commands

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

非常有趣和令人沮丧。有人可以指出我的解释吗?

4

1 回答 1

8

请参阅文档

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 命令。通常应该提供可执行文件的完整路径并保持外壳禁用。

于 2012-10-17T14:52:38.717 回答