Python 如何处理;NotDirectoryError:[Errno 20]不是目录:";

Python 如何处理;NotDirectoryError:[Errno 20]不是目录:";,python,jupyter-notebook,Python,Jupyter Notebook,我的错误 --------------------------------------------------------------------------- NotADirectoryError Traceback (most recent call last) <ipython-input-2-b4da6c1da6e1> in <module> 12 lst = [] 13 for d in lst1

我的错误

---------------------------------------------------------------------------
NotADirectoryError                        Traceback (most recent call last)
<ipython-input-2-b4da6c1da6e1> in <module>
     12 lst = []
     13 for d in lst1:
---> 14     lst = lst + listdir(d)
     15 lst

<ipython-input-2-b4da6c1da6e1> in listdir(path)
      4 def listdir(path):  #传入存储的list
      5     lst = []
----> 6     for file in os.listdir(path):
      7         file_path = os.path.join(path, file)
      8         lst.append(file_path)

NotADirectoryError: [Errno 20] Not a directory: '/Users/zhangzhenzhi/Desktop/Term2_Final/CASA0006/CityofLondonCrimeData/.DS_Store'

我想将所有文件的路径保存到listm,但我运行了它,它显示了一个错误,我不知道我能做什么?

您需要在“os.listdir”之前检查对象的类型

def listdir(路径):#传入存储的列表
lst=[]
如果os.path.isdir(路径):#检查此路径=文件夹路径
对于os.listdir(路径)中的文件:
file\u path=os.path.join(路径,文件)
lst.append(文件路径)
查看异常。 NotDirectoryError:[Errno 20]不是目录:'/Users/zhangzhenzhi/Desktop/Term2_Final/casa006/CityofLondonCrimeData/.DS_Store'

这条线
lst1=listdir(r'/Users/zhangzhenzhi/Desktop/Term2_Final/casa006/CityofLondonCrimeData')

这将返回所有路径的列表,包括具有完整路径的文件,“.DS_Store”是一个文件。然后,您还可以循环查看在
lst1
上获得的内容。在这种情况下,
os.listdir
尝试对导致引发异常的文件(回溯中的路径)进行操作

更可靠的方法是为此目的使用包glob。试一试

glob.glob(path)
并返回该路径下的路径列表。如果希望它是递归的,请将
/**
添加到路径的末尾,并添加
recursive=True
参数

# -*- coding: utf-8 -*-  
import os  

def listdir(path):  #传入存储的list
    lst = []
    for file in os.listdir(path):  
        file_path = os.path.join(path, file)  
        lst.append(file_path) 
    return lst
lst1 = listdir(r'/Users/zhangzhenzhi/Desktop/Term2_Final/CASA0006/CityofLondonCrimeData' )

lst = []
for d in lst1:
    lst = lst + listdir(d)
lst