使用file_column生成uuid图片名称

import pandas as pd import os import uuid from pathlib import Path def process_and_split_excel(excel_path, columns_to_delete, split_column, output_dir, output_fileName): """ 处理Excel文件:删除指定列,并按指定列的不同值拆分多个文件,支持自定义文件名前缀 参数: excel_path (str): Excel文件路径(支持xls和xlsx格式) columns_to_delete (list): 需要删除的列名列表 split_column (str): 用于拆分的列名 output_dir (str): 处理后文件的保存目录 output_fileName (str): 生成文件的前缀名称 返回: list: 处理后生成的所有文件路径列表 """ # 确保输出目录存在 Path(output_dir).mkdir(parents=True, exist_ok=True) try: # 读取Excel文件 if excel_path.endswith('.xls'): df = pd.read_excel(excel_path, engine='xlrd') else: # .xlsx df = pd.read_excel(excel_path, engine='openpyxl') # 检查需要删除的列是否存在并删除 existing_columns = df.columns.tolist() columns_to_remove = [col for col in columns_to_delete if col in existing_columns] if columns_to_remove: df = df.drop(columns=columns_to_remove) print(f"已删除列: {', '.join(columns_to_remove)}") # 检查拆分列是否存在 if split_column not in df.columns: raise ValueError(f"拆分列 '{split_column}' 不存在于Excel文件中") # 获取拆分列的所有不同值 unique_values = df[split_column].unique() print(f"按列 '{split_column}' 拆分,共 {len(unique_values)} 个不同值") # 存储生成的文件路径 result_files = [] # 按不同值拆分并保存文件 for value in unique_values: # 处理值中的特殊字符,避免作为文件名时出错 sanitized_value = str(value).replace('/', '_').replace('\\', '_').replace(':', '-') # 生成唯一文件名,格式:前缀-拆分值_随机ID.xlsx file_id = uuid.uuid4().hex[:8] # 处理前缀为空的情况(避免出现"-"开头) if output_fileName.strip(): output_filename = f"{output_fileName}-{sanitized_value}.xlsx" else: output_filename = f"{sanitized_value}_{file_id}.xlsx" output_path = os.path.join(output_dir, output_filename) # 筛选数据并保存 subset_df = df[df[split_column] == value].copy() subset_df.to_excel(output_path, index=False, engine='openpyxl') result_files.append(output_path) print(f"已生成文件: {output_path} (包含 {len(subset_df)} 行数据)") return result_files except Exception as e: print(f"处理文件时出错: {str(e)}") raise # 示例参数 excel_file_path = r"C:\宁波财资\P卡账单\2025-09\01日\已解析账单.xlsx" # 输入Excel文件路径 cols_to_delete = ["平台", "类型"] # 需要删除的列 split_col = "*币种(必填)" # 用于拆分的列名 output_fileName = "xxx" # 文件名前缀 output_directory = r"C:\宁波财资\P卡账单\2025-09\01日\导入账单" # 输出目录 # 调用函数 try: output_files = process_and_split_excel( excel_path=excel_file_path, columns_to_delete=cols_to_delete, split_column=split_col, output_dir=output_directory, output_fileName=output_fileName # 传入新参数 ) print("\n处理完成,生成的文件列表:") for file_path in output_files: print(file_path) except Exception as e: print(f"操作失败: {e}") 修改拆分文件保存为xls格式,学习使用下面的方法:import xlrd xlsx = xlrd.open_workbook("文件路径") table = xlsx.sheet_by_index(0) rows_num = table.nrows # 返回表的行数 print(table.cell_value(0,0)) # 读取某个单元格的值
最新发布
09-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值