2012-06-07 50 views
3

在我的计划,我有一个函数的runScript():python:为什么调用回声与子进程返回WindowsError 2?

def runScript(): 
subprocess.call(['echo', 'hello']) 

我已经看到了Python文档中类似的例子很多,所以我认为这是可行的。但是,当我在我的程序中调用此函数时,它将返回一个WindowsError。

WindowsError: [Error 2] The system cannot find the file specified 

这是为什么发生?我该如何解决它?

+0

个回波是linux命令。在Linux机器上运行它,它将完美无缺地工作。 –

+0

@Flo它也是一个Windows shell命令。 – JoeFish

+0

@JoeFish的确。我的错。 Reading kindall的回答很有道理。我不知道为什么我跳了这么说。也许我希望linux更独一无二。 :P –

回答

10

echo命令内置于Windows外壳,cmd.exe。它不是可以在没有shell的情况下调用的外部程序。因此,您的subprocess.call()需要指定shell=True

subprocess.call('echo hello', shell=True) 

(另外,外壳将处理拆分命令给你,所以我用传递命令的简单的单串的风格。)

+0

是的,我试过了这种方式更早,它的工作原理。但是,我原来的答案中列出的方法是Python网站上列出的方法。这是因为他们指的是Linux'echo'而不是Windows'echo'? – user1442389

+0

'echo'是Linux上的一个外部命令,是的(尽管一些shell也有一个内部版本,用于性能)。我认为谁写的没有考虑到Windows! – kindall