我写了一个简短的脚本,在目录树中搜索匹配的最新文件"Data*.txt",但速度非常慢。这是因为我不得不嵌套 for 循环(我怀疑)。示例目录树:ROOT |-- <directoryNameFoo1> | |-- from # This stays the same in each subdir... | |-- <directoryNameBar1> | |-- Data*.txt | |-- <directoryNameFoo2> | |-- from # This stays the same in each subdir... | |-- <directoryNameBar2> | |-- Data*.txt | |-- <directoryNameFoo3> | |-- from # This stays the same in each subdir... | |-- <directoryNameBar3> | |-- Data*.txt我的问题是:是否有更好/更快的方法来搜索目录结构以找到"Data*.txt"每个子目录中匹配的最新文件?代码:#!/usr/bin/env python# -*- coding: utf-8 -*-import osimport fnmatch__basedir = os.path.abspath(os.path.dirname(__file__))last_ctime = Nonevehicle_root = Nonefile_list = []for root, dirnames, filenames in os.walk(__basedir): vehdata = [] for filename in fnmatch.filter(filenames, 'Data*.txt'): _file = os.path.join(root, filename) if vehicle_root == root: if os.path.getctime > last_ctime[1]: last_ctime = [_file, os.path.getctime(_file)] else: continue else: file_list.append(last_ctime) vehicle_root = root last_ctime = [_file, os.path.getctime(_file)] print(file_list)
1 回答
鸿蒙传说
TA贡献1865条经验 获得超7个赞
您可以使用glob来搜索特定模式数据而无需任何循环。喜欢,
import glob glob.glob('yourdir/Data*.txt')
glob.glob('yourdir/Data*.txt,recursive=True)
当你想在你定义的目录中的所有子目录中搜索时使用。
添加回答
举报
0/150
提交
取消