Python 3子进程模块抛出错误

时间:2017-07-24 14:20:02

标签: python subprocess

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

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

错误消息:

  

文件" C:\ Python36 \ lib \ subprocess.py",第336行,在check_output中       ** kwargs).stdout

     

文件" C:\ Python36 \ lib \ subprocess.py",第403行,运行中       以Popen(* popenargs,** kwargs)为过程:

     

文件" C:\ Python36 \ lib \ subprocess.py",第707行, init       restore_signals,start_new_session)

     

文件" C:\ Python36 \ lib \ subprocess.py",第990行,在_execute_child中       STARTUPINFO)

     

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

3 个答案:

答案 0 :(得分:3)

它不是可执行文件,而是shell built-in。 Python子进程模块无法找到它,因此出现错误。

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

答案 1 :(得分:1)

似乎“dir”不在你的道路上。我不知道Windows上这个可执行文件的完整路径,但也许你应该用c:\ windwos \ system \ dir

替换dir

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

os.listdir(path)

答案 2 :(得分:0)

除了@grundic

  

它不是可执行文件,而是shell built-in。 [...]

如果你真的想要执行cmd内置命令,你必须在你的情况下执行cmd.exe /c COMMAND_HERE

import subprocess 
out = subprocess.check_output(['cmd.exe', '/c', 'dir'])

/c表示执行后cmd.exe关闭