使用Python迭代文件夹中的文件名后,获取最新的文件名

2024-05-13 07:55:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文件夹列表。我遍历每个文件夹,读取文件名并从中提取日期,格式为21Mar15。接下来,我将日期转换为字符串或对象形式的2015-03。我想找出哪个是最新的文件,或者更确切地说是把每个文件夹的最新日期放入一个变量中。我陷得很深。请帮忙。 我的代码是这样的:

folders = []
folders = ftp.nlst() 
folders = map(str, folders) 
folders.sort() 
new_batches = [folder for folder in folders] 
#gets a list of folders in the ftp 
def folder_num(folder): 
    ftp.cwd(folder) 
    x=[] 
    x=ftp.nlst() 
    return x 
folder_list = len(folder) 
for batches in new_batches:
    y=folder_num(batches)
    if batches == "ABCD":

        for b in y:
            if (len(b)== 19):
                #print b[8:15]
                date = datetime.datetime.strptime(b[8:15], '%d%b%y').date().strftime('%Y-%m')
                print b + " "+ date
            else:
                #print b[9:16]
                date = datetime.datetime.strptime(b[9:16], '%d%b%y').date().strftime('%Y-%m')
                print b +" " + date
        ftp.cwd("//")
    elif batches == "EFGH":     
        for b in y:
            if (len(b)== 19):
                #print b[8:15]
                date = datetime.datetime.strptime(b[8:15], '%d%b%y').date().strftime('%Y-%m')
                print b +" " + date
            else:
                #print b[19:26]
                date = datetime.datetime.strptime(b[19:26], '%d%b%y').date().strftime('%Y-%m')
                print b +" " + date
        ftp.cwd("//")

输出如下:

ABCD
abcd23Mar15 2015-03
abcd130Apr15 2015-04
EFGH
efgc12Apr15 2015-04
efgh115Feb15 2015-02

我需要一个

var1_for_ABCD = 2015-04
var2_for_EFGH = 2015-04

或者,请帮我计算每个文件夹的最新日期。你知道吗

请帮忙。 提前谢谢


Tags: in文件夹fordatetimedatelenifftp
1条回答
网友
1楼 · 发布于 2024-05-13 07:55:54

您临时创建的datetime对象和从中构建的YYYY-MM字符串都与<相当。您只需将每个日期与迄今为止看到的最大值进行比较即可找到最大值:

    max_date = ""
    for b in y:
        if (len(b)== 19):
            date = datetime.datetime.strptime(b[8:15], '%d%b%y').date().strftime('%Y-%m')
            if data > max_date:
                max_date = date
        else:
            #print b[9:16]
            date = datetime.datetime.strptime(b[9:16], '%d%b%y').date().strftime('%Y-%m')
            if data > max_date:
                max_date = date

    # do something here with max_date?

相关问题 更多 >