如何按文件名中的时间戳排序CSV文件,实现旧文件优先加载?
按时间戳排序CSV文件并按顺序加载
问题场景
将对象与属性数据分别存储在不同CSV文件中,包含plant、flower、person三种类型的对象。需仅读取各类型的对象文件及其对应属性文件,且读取顺序为先对象文件、后对应属性文件,同时要求按文件名中的YYYYMMDDHHMMSS时间戳排序,实现最旧的文件优先加载、最新的文件最后加载。
现有代码已完成各类型对象文件的分类收集,但未实现按时间戳排序。
解决方案
核心思路是从每个对象文件名中提取YYYYMMDDHHMMSS格式的时间戳字符串,利用该字符串的字典序与时间顺序一致的特性,对文件列表进行升序排序(升序即旧文件在前,新文件在后)。
修改后的完整代码
import os import pandas as pd plant = [] flower = [] person = [] dir_path = "你的目录路径" # 替换为实际目录路径 # 收集各类型对象文件 for file_name in os.listdir(dir_path): file_path = os.path.join(dir_path, file_name) if os.path.isfile(file_path): if file_name.startswith('plant_file'): plant.append(file_name) elif file_name.startswith('person_file'): person.append(file_name) elif file_name.startswith('flower_file'): flower.append(file_name) # 定义提取时间戳的辅助函数(可选,让代码更清晰) def extract_timestamp(file_name): # 从文件名中提取YYYYMMDDHHMMSS部分 return file_name.split('_')[-1].replace('.csv', '') # 按时间戳升序排序(最旧文件在前) plant = sorted(plant, key=extract_timestamp) flower = sorted(flower, key=extract_timestamp) person = sorted(person, key=extract_timestamp) # 处理person类型文件 for file_name in person: object_file_path = os.path.join(dir_path, file_name) attribute_file_path = os.path.join(dir_path, file_name.replace('file','attributes_file')) read_object_csv = pd.read_csv(object_file_path) read_attribute_csv = pd.read_csv(attribute_file_path) # 这里添加你的处理逻辑,比如数据合并、存储等 # 处理flower类型文件 for file_name in flower: object_file_path = os.path.join(dir_path, file_name) attribute_file_path = os.path.join(dir_path, file_name.replace('file','attributes_file')) read_object_csv = pd.read_csv(object_file_path) read_attribute_csv = pd.read_csv(attribute_file_path) # 添加处理逻辑 # 处理plant类型文件(原代码遗漏了这部分,补充上) for file_name in plant: object_file_path = os.path.join(dir_path, file_name) attribute_file_path = os.path.join(dir_path, file_name.replace('file','attributes_file')) read_object_csv = pd.read_csv(object_file_path) read_attribute_csv = pd.read_csv(attribute_file_path) # 添加处理逻辑
关键说明
- 时间戳提取:通过
split('_')[-1]获取文件名末尾的时间戳+后缀部分,再用replace('.csv', '')得到纯时间戳字符串。 - 排序逻辑:
YYYYMMDDHHMMSS格式的字符串可直接按字典序比较,升序排序(sorted默认升序)即可实现旧文件优先加载。 - 路径优化:将
dir_path + file_name改为os.path.join(dir_path, file_name),适配不同操作系统的路径分隔符,避免路径错误。 - 补充plant类型处理:原代码遗漏了plant类型文件的循环处理,已补充完整。
内容的提问来源于stack exchange,提问作者Hari
相关产品推荐
相关产品推荐

