1

我安装了 Python 3.2,我正在尝试使用 subprocess 模块,但我不断收到错误消息。

我正在使用的代码是:

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
4

1 回答 1

2

据我所见,问题不在于subprocess- 问题是PATH上没有命名echo的可执行文件:

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

我的猜测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,要求它立即以非零状态码退出?!?

于 2013-06-25T14:16:54.283 回答