You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按文件名中的时间戳排序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)
    # 添加处理逻辑

关键说明

  1. 时间戳提取:通过split('_')[-1]获取文件名末尾的时间戳+后缀部分,再用replace('.csv', '')得到纯时间戳字符串。
  2. 排序逻辑:YYYYMMDDHHMMSS格式的字符串可直接按字典序比较,升序排序(sorted默认升序)即可实现旧文件优先加载。
  3. 路径优化:将dir_path + file_name改为os.path.join(dir_path, file_name),适配不同操作系统的路径分隔符,避免路径错误。
  4. 补充plant类型处理:原代码遗漏了plant类型文件的循环处理,已补充完整。

内容的提问来源于stack exchange,提问作者Hari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 07:55:26