Python 递归列出目录,但不包括具有特定字符的任何文件夹
我有两个任务:Python 递归列出目录,但不包括具有特定字符的任何文件夹,python,recursion,directory-structure,Python,Recursion,Directory Structure,我有两个任务: 我用杜威十进制分类法建立了我的数字图书馆,所以我有一个3层的10+100+1000文件夹的层次结构,目录有时会更深一些。这个库结构包含我希望在目录中列出的“书籍”(可能是可搜索的文本文档)。如果我能在每本“书”旁边的单独一列中查看父目录名,那就更好了,尽管这不是绝对必要的 问题是我的图书馆中的一些“书”是单独作为项目的文件夹。当我设计这个系统并制作它时,我提前做了计划,这样我的库中的每个项都会在[]s中包含一个标记,例如,该标记将包含作者姓名,所以我的想法是,我会尝试执行所有这些
[]
s中包含一个标记,例如,该标记将包含作者姓名,所以我的想法是,我会尝试执行所有这些的递归列表,但当遇到[
在名称、目录或文件中[
,如果有,请停止并将其(连同父目录的名称)添加到列表中。我不知道从何处开始。答案基于何处
- dirName:它找到的下一个目录
- 子目录列表:当前目录中的子目录列表
- 文件列表:当前目录中的文件列表
enumerate
进行删除,以便在修改原始列表时删除后不会跳过计数器i
我没有试过,所以不要100%相信这个
# Import the os module, for the os.walk function
import os
# Set the directory you want to start from
rootDir = '.'
for dirName, subdirList, fileList in os.walk(rootDir):
print('Found directory: %s' % dirName)
for fname in fileList:
print('\t%s' % fname)
for i, elem in reversed(list(enumerate(subdirList[:]))):
if "[" in elem:
del subdirList[i]
Google搜索“python中的遍历目录树”立即生成了此链接和其他一些好链接:。您可以根据需要添加字符串匹配。构建一个类!
类库
可以有一个更新
方法,它可以执行所有这些遍历操作,并且您可以在执行时添加搜索等功能!类书
可以包含每个类的杜威十进制分类书,所以你可以做一些类似于[book(file)for root,dir,file in os.walk(rootDir)]
的事情。做一些很酷的事情!!也就是说,我真的不明白你的图书馆是如何用你的“目录书”布局的问题。您能详细说明一下吗?您的上一个循环无法正确删除多个项目,因为原始子列表
中后续项目的索引将在您删除早期项目时发生更改。您需要向后迭代(从末尾到开头),或者使用不同的方法就地修改列表(例如片分配:子列表[:]=[elem表示子列表中的元素,如果“[”不在元素中]
).说得好。但我们不能使用列表理解,因为它不在适当的位置。我正在编辑它。它现在固定为向后枚举。经过一点修补,到目前为止,这似乎像预期的那样工作,如果不完美的话。我编辑了此答案以反映我的修改。这显示目录为“books”或项目,就像其他文件一样。谢谢您的帮助!