Python 3子进程模块抛出错误

Python 3 subprocess module throws error

Python 3中的这个简单程序抛出错误。原因可能是什么?安装/重新安装Python 3.5/3.6后出现此问题。另外,我的PC(Windows 10计算机)上也安装了Python 2.7

1
2
import subprocess
out = subprocess.check_output(['dir'])

错误消息:

File"C:\Python36\lib\subprocess.py", line 336, in check_output
**kwargs).stdout

File"C:\Python36\lib\subprocess.py", line 403, in run
with Popen(*popenargs, **kwargs) as process:

File"C:\Python36\lib\subprocess.py", line 707, in init
restore_signals, start_new_session)

File"C:\Python36\lib\subprocess.py", line 990, in _execute_child
startupinfo)

FileNotFoundError: [WinError 2] The system cannot find the file
specified


它不是可执行文件,而是内置于shell中。python子进程模块找不到它,所以出现了一个错误。

如果要使用子进程模块,请使用一些现有的二进制文件,例如pythonnotepadping。如果需要列出文件夹内容,请使用os.listdiros.walk


似乎"dir"不在您的路径中。我不知道该可执行文件在Windows上的完整路径,但也许您应该用C:windwossystemdir替换dir。

或者最好的解决方案是使用操作系统模块中的函数列出目录:

1
os.listdir(path)