Python 3 子进程模块在运行“dir"时抛出错误.在 Windows 上

2022-01-18 00:00:00 python subprocess

问题描述

Python 3 中的这个简单程序会引发错误.可能是什么原因?这个问题是在我安装/重新安装 Python 3.5/3.6 之后出现的.Python 2.7 也安装在我的 PC(Windows 10 机器)上.

This simple program in Python 3 throws errors. What could be the reason? This problem arose after I installed/reinstalled Python 3.5/3.6. Also Python 2.7 is installed on my PC (windows 10 machine).

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

错误信息:

文件C:Python36libsubprocess.py",第 336 行,在 check_output 中**kwargs).stdout

File "C:Python36libsubprocess.py", line 336, in check_output **kwargs).stdout

文件C:Python36libsubprocess.py",第 403 行,运行中使用 Popen(*popenargs, **kwargs) 作为进程:

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

init 中的文件C:Python36libsubprocess.py",第 707 行restore_signals, start_new_session)

File "C:Python36libsubprocess.py", line 707, in init restore_signals, start_new_session)

文件C:Python36libsubprocess.py",第 990 行,在 _execute_child 中启动信息)

File "C:Python36libsubprocess.py", line 990, in _execute_child startupinfo)

FileNotFoundError: [WinError 2] 系统找不到文件指定

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


解决方案

不是可执行文件,而是 内置到外壳.Python subprocess 模块找不到,所以报错了.

It's not an executable, but built-in to the shell. Python subprocess module can't find it, so you got an error.

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

If you would like to play with subprocess module, use some existing binary, e.g. python, notepad or ping. In case you need to list folder content, please use os.listdir or os.walk.

相关文章