我安装了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
答案 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,要求它立即退出非零状态代码?!?