获取名称中包含日期的文件夹中的文件列表

Get the list of files inside a folder that have a date inside their name

我有一个文件夹,里面有一些文件,是这样调用的:

file_1_20200101235900
file_2_20200101235900
file_3_20200101235900
file_4_20200109999999

我想获得一个列表,其中包含名称中包含 'YYYYMMDDHHMMSS' 格式日期的所有文件。所以在这个例子中,我想获取除 file_4_20200109999999 之外的所有文件,因为其中的日期不存在。

预期输出:

list =[file_1_20200101235900, file_2_20200101235900, file_3_20200101235900]

您可以使用 os.listdir to iterate over the files and a custom function based on datetime.datetime 来验证日期。

使用真实日期解析器是确保计算所有细节以确定日期是否有效的最佳选择。

def valid_date(date, fmt='%Y%m%d%H%M%S'):
    from datetime import datetime
    try:
        datetime.strptime(date, fmt)
        return True
    except ValueError:
        return False
    
import os

path = '/path/to/your/files/'
files = [f for f in os.listdir(path) if valid_date(f.rpartition('_')[-1])]

输出:

['file_2_20200101235900', 'file_3_20200101235900', 'file_1_20200101235900']