无法使用python 3.2运行调用子进程方法

时间:2013-06-25 14:03:34

标签: python command-line subprocess

我安装了Python 3.2,我正在尝试使用子进程模块,但我不断收到错误。

我使用的代码是:

import subprocess
subprocess.check_output(["echo", "Hello World!"])
subprocess.check_output("exit 1", shell=True)

我不断收到subprocess.check_output(["echo", "Hello World!"])

的错误消息
Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    subprocess.check_output(["echo", "Hello World!"])
  File "C:\Python32\lib\subprocess.py", line 514, in check_output
    process = Popen(*popenargs, stdout=PIPE, **kwargs)
  File "C:\Python32\lib\subprocess.py", line 744, in __init__
    restore_signals, start_new_session)
  File "C:\Python32\lib\subprocess.py", line 977, in _execute_child
    startupinfo)
WindowsError: [Error 2] The system cannot find the file specified

并且对于行subprocess.check_output("exit 1", shell=True),我收到以下错误:

Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    subprocess.check_output("exit 1", shell=True)
  File "C:\Python32\lib\subprocess.py", line 521, in check_output
    raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command 'exit 1' returned non-zero exit status 1

1 个答案:

答案 0 :(得分:2)

据我所知,问题不在于subprocess - 问题是 PATH上有没有可执行文件名为echo

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

我的 guess echo是Windows Shell内部命令。尝试使用shell=True启动它:

subprocess.check_output(["echo", "Hello World!"], shell=True)

如果要调用可执行程序(“。exe”),则不需要shell。只需传递程序的名称和可选参数:

subprocess.check_output(["notepad.exe", "file.txt"])

顺便说一下,你想用这条线做什么:

subprocess.check_output("exit 1", shell=True)

这只启动一个子shell,要求它立即退出非零状态代码?!?