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

如何用Python按日期列重命名最新CSV并移动至指定目录?

解决方案:Selenium下载后自动重命名并移动指定CSV文件

问题背景

通过Selenium从客户网站下载ABC.csv,但无法提前修改下载路径或文件名,需事后处理:取出下载文件夹中最新的ABC.csv,根据文件内B2单元格的日期值重命名(如ABC-12-10-2022.csv),最终移动至E盘指定目录。

原代码存在的问题

  1. 未过滤CSV文件,会匹配下载目录中所有.csv文件,而非仅ABC相关文件
  2. 读取日期单元格时未对应B2位置(B2对应DataFrame的iloc[1,1],索引从0开始)
  3. 缺少文件移动的核心步骤
  4. 路径拼接存在语法错误(如未转义或格式错误)

优化后的完整代码

import glob
import os
import pandas as pd
import shutil

# 配置路径参数
DOWNLOAD_DIR = r'C:\Users\Manish\Downloads'
TARGET_DIR = r'E:\目标文件夹路径'  # 替换为你的E盘目标目录

# 1. 筛选下载目录中所有ABC开头的CSV文件,避免匹配无关CSV
abc_csv_files = glob.glob(os.path.join(DOWNLOAD_DIR, 'ABC*.csv'))
if not abc_csv_files:
    raise FileNotFoundError("下载目录中未找到ABC开头的CSV文件")

# 2. 找出最新的ABC文件(按修改时间排序,更符合下载后文件的时间逻辑)
latest_abc_file = max(abc_csv_files, key=os.path.getmtime)

# 3. 读取CSV文件,获取B2单元格的值(B列是第2列,索引1;第2行是索引1)
df = pd.read_csv(latest_abc_file)
b2_date = df.iloc[1, 1]  # 若B列有列名,也可改用df['列名'].iloc[1]

# 4. 格式化日期为指定格式(示例:dd-mm-yyyy,可根据实际日期格式调整)
# 假设b2_date是datetime类型,若为字符串需先转换
formatted_date = pd.to_datetime(b2_date).strftime('%d-%m-%Y')
new_file_name = f'ABC-{formatted_date}.csv'

# 5. 拼接新文件路径,直接移动并重命名(一步完成,无需先重命名再移动)
new_file_path = os.path.join(TARGET_DIR, new_file_name)
shutil.move(latest_abc_file, new_file_path)

print(f"文件已成功处理:{latest_abc_file} → {new_file_path}")

关键说明

  • 筛选文件:用ABC*.csv匹配所有以ABC开头的CSV(包括下载时自动生成的ABC(1).csv这类重复文件)
  • 最新文件判断:使用os.path.getmtime(修改时间)而非创建时间,更准确反映下载完成后的文件状态
  • B2单元格读取:iloc[1,1]对应Excel中的B2(索引从0开始),如果B列有明确列名(如Market Date),可改为df['Market Date'].iloc[1]更易维护
  • 移动并重命名:直接用shutil.move()一步完成重命名+移动,比先重命名再移动更高效,避免中间步骤出错
  • 异常处理:增加了文件不存在的判断,避免程序崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 13:35:14