python-2.7 - 遍历多个文件夹以在python的多个foder中搜索相同的文件
问题描述
在多个文件夹中搜索同一个文件
我已经尝试过 os.walk(path) 但我没有遍历嵌套文件夹
for current_root, folders, file_names in os.walk(self.path, topdown=True):
for i in folders:
print i
for filename in file_names:
count+= 1
file_path = os.path.join(current_root + '\\' + filename)
#print file_path
self.location_dictionary[file_path] = filename
在我的代码中,它将打印所有文件夹,但它不会递归地进入嵌套文件夹例如:我有 subdir,subdir1,subdir2 并且在 subdir 我有另一个名为 abc 的目录在 subdir 和 abc 都包含相同的文件名我想阅读那个文件
解决方案
os.walk
不能那样工作。
对于current_root
它遍历的每一个,它都提供直接在它下面的目录和文件的列表。
你正在嵌套循环,这确实......好吧我不知道......
在这里你不需要文件夹(所以只需静音参数)。current_root
已经包含您的文件的该信息:
for current_root, _, file_names in os.walk(self.path, topdown=True):
for filename in file_names:
count+= 1
file_path = os.path.join(current_root,filename)
#print file_path
self.location_dictionary[file_path] = filename
撇开:创建一个字典,其中完整文件作为键,文件名作为值看起来,嗯,不是你想要的(相同的信息可以存储在set
or中list
,并且os.path.basename
可以用于计算文件名。也许它是相反的(文件名 => 完整路径),前提是没有重复的文件名。
推荐阅读
- http-headers - 如何让浏览器将所有 HTTP 标头传递给 ServiceWorker?
- python - 在python中对导入语句进行分组
- javascript - 如何在 Express 中使用 Handlebars?
- python - 当我检查硬退回电子邮件时,python 上的条件
- android - 从 React Native 项目生成 apk 时遇到问题?
- vue.js - 无法在控制台中输出全局属性
- amazon-web-services - 无法通过具有 SSL 的 Cloudfront 访问 Amazon S3 文件
- startup - 启动时未调用 Micronoaut ServerStartupEvent 回调?
- google-app-engine - Appengine 上的 Nodejs,google-cloud/storage:如何检查文件夹是否存在,如果存在,则从中获取所有文件?
- java - ANTLR 简单公式解析器