每次运行Python脚本时如何生成新Excel文件而非覆盖原有文件
Python按月生成不覆盖的Excel文件实现方案
你当前的代码逻辑已经实现了按月份命名文件的核心需求,只要修正两个问题就能正常运行:
- 直接使用
open()创建.xlsx后缀文件属于无效操作,xlsx是二进制格式的表格文件,直接用文本模式写入会导致文件损坏无法打开,需要用pandas、openpyxl这类专业处理Excel的库导出清洗后的数据 - 现有文件名仅包含月份标识,跨年运行时会出现同月份文件覆盖的问题,建议加上年份标识避免冲突
优化后可直接运行的代码示例
import os.path from datetime import datetime import pandas as pd # 生成带年月的时间标识,格式可自定义 # 若需要英文月份全称可替换为 '%Y_%B',生成类似2024_June的标识 curr_date = datetime.strftime(datetime.now(), '%Y_%m') save_path = 'T:/1. 2021 Timesheets n Bandwidth Tracker/Project Database/RA Copy/' # 自动创建不存在的保存路径,避免路径不存在报错 if not os.path.exists(save_path): os.makedirs(save_path) name_of_file = f"PRO Project DB_RA_{curr_date.upper()}" completeName = os.path.join(save_path, f"{name_of_file}.xlsx") # df为你完成数据清洗后的DataFrame对象,直接导出即可 df.to_excel(completeName, index=False)
额外可选优化
如果同一个月内需要多次运行脚本,不想覆盖当月已生成的文件,可以调整命名规则:
- 精确到天:将时间格式化参数改为
%Y_%m_%d,同一天多次运行可以再加%H%M精确到分钟 - 自动加版本号:判断目标路径下是否存在同名文件,存在的话自动在文件名后缀加
_v1、_v2这类版本标识
内容的提问来源于stack exchange,提问作者Sheryna
相关产品推荐
相关产品推荐

