使用Python批量重命名并迁移Linux服务器上的CSV文件
解决方案
以下是实现需求的Python代码,注释清晰易懂,适配新手使用:
import os import shutil from datetime import date # 替换为你的源文件夹实际路径(Linux下用/分隔,比如/home/user/csv_files) source_dir = "/path/to/source/folder" # 替换为你的目标文件夹实际路径 dest_dir = "/path/to/destination/folder" # 获取当日日期,格式为yyyymmdd(例如20240520) today_date = date.today().strftime("%Y%m%d") # 自动创建目标文件夹,已存在则不报错 os.makedirs(dest_dir, exist_ok=True) # 遍历源文件夹内的所有文件 for filename in os.listdir(source_dir): # 仅处理CSV格式文件 if filename.endswith(".csv"): # 从右侧拆分文件名,最多拆2次——避免entity_name包含下划线时拆分出错 parts = filename.rsplit("_", 2) # 校验文件名是否符合预期格式 if len(parts) == 3: entity_name = parts[0] # 构造新文件名 new_filename = f"{entity_name}_{today_date}.csv" # 拼接完整文件路径 src_full_path = os.path.join(source_dir, filename) dest_full_path = os.path.join(dest_dir, new_filename) # 完成迁移+重命名操作 shutil.move(src_full_path, dest_full_path) print(f"处理完成: {filename} → {new_filename}") else: print(f"跳过不符合格式的文件: {filename}")
关键细节说明
- 兼容含下划线的entity_name:用
rsplit("_", 2)从右侧拆分2次,确保无论entity_name是否包含下划线,都能正确分离出后面的日期、时间部分。 - 自动处理目标文件夹:
os.makedirs(dest_dir, exist_ok=True)会自动创建目标文件夹,已存在时不会抛出错误。 - 迁移+重命名一步完成:
shutil.move()同时实现文件迁移和重命名,无需先重命名再移动。 - 格式校验防报错:增加文件名结构检查,跳过不符合格式的文件并打印提示,避免程序崩溃。
使用提示
- 务必替换代码中的
source_dir和dest_dir为你实际的Linux路径。 - 运行前建议备份源文件,防止操作失误丢失数据。
- 若只需原地重命名(不迁移到新文件夹),只需将
dest_full_path改为os.path.join(source_dir, new_filename),并删除创建目标文件夹的代码即可。
内容的提问来源于stack exchange,提问作者Jag
相关产品推荐
相关产品推荐

