在以某个单词开头的路径中查找最新文件夹

时间:2017-12-12 15:11:46

标签: python python-3.x

我想询问是否可以在以模式开头的路径中找到最新文件夹。

示例,让我们说我们在这条道路上:C:\Users\user

有4个文件夹(以及我们不关心的许多其他文件夹)名称:

folder13, folder15, folder17, folder20

如何使用Python返回最新文件夹的编号为20

2 个答案:

答案 0 :(得分:0)

首先,您可以使用os.walk函数从指定的根文件夹(递归)或os.listdir解析所有子文件夹,以获取包含目录中条目名称的列表。

接下来,您可以使用re模块,它提供了一些使用正则表达式的函数。

这是一个例子:

var promises = [];
promises.push(firebase.database().ref('experiences').child(experience_id).once('value'));
promises.push(firebase.database().ref('users').child(from_UID).once('value'));

// Wait for all promises to resolve
Promise.all(promises).then(function(res) {        
    // res[0] is your experience_id snapshot
    // res[1] is your from_UID snapshot
    // Do something...
});

此网站可帮助您在实施前测试正则表达式:https://regex101.com/

答案 1 :(得分:0)

首先使用os.listdir()生成文件和文件夹列表。然后过滤它,使其只包含文件夹。接下来使用sorted()根据名称中包含的任何数值对条目进行排序。最后,获取排序列表中的最后一个条目以获得具有最大数字的条目:

import os
import re

folders = [folder for folder in os.listdir(r'C:\Users\user') if os.path.isdir(folder)]
folders = sorted(folders, key=lambda x: [int(v) if len(v) else -1 for v in re.findall('(\d+)', x)])

print(folders[-1])

当碰巧存在多个级别的数字时,此方法会起作用,因此例如名为Folder20_1的文件夹将被排序为(20, 1)