我有一个目录(data/
),其中包含许多子目录(深度为4的结构),每个子目录应包含一个文件(例如,一个名为index.xml
的xml文件)。
我想创建一个包含此文件实际存在的所有路径的列表。以下工作正常:
import os
index_files = []
for root, subdirs, files in os.walk("data/"):
file_path = os.path.join(root, "index.xml")
if os.path.exists(file_path):
index_files.append(file_path)
但是速度可能很慢。是否有i)进行此操作的任何替代方法(即是否必须使用os.walk
?)和ii)有任何使此操作更快的方法?
为什么不只是递归地遍历所有目录并按路径记录在字典中找到的内容。然后检查密钥中是否存在路径。这应该更快,因为您无需承担检查文件是否存在的系统调用费用。
所以解决这个问题的方法是我使用语句。
如果文件:#此行将检查目录中是否存在文件。如果文件中为“ index.xml”:#检查此特定文件是否在列表中。List.append(root)#这样将目录添加到列表中。