求助:修改Python代码实现多XLSX文件批量转CSV格式
批量XLSX转CSV的代码修改方案
原代码的问题在于,当multiple_files=True时,sg.popup_get_file返回的是多个文件路径组成的列表,但你直接把整个列表传给了pd.read_excel,导致报错。下面是修改后的可批量处理的代码:
import pandas as pd import PySimpleGUI as sg # 获取多个Excel文件路径 path_files = sg.popup_get_file('选择文件', title='选择文件', file_types=(('Excel文件', '*.xlsx'),), multiple_files=True) # 检查是否选中了文件 if not path_files: sg.popup('未选择任何文件', title='提示') else: # 遍历每个选中的文件路径 for path_file in path_files: # 读取Excel文件 df = pd.read_excel(path_file, dtype='str', engine='openpyxl') # 表头转大写 df.columns = [col.upper() for col in df.columns] # 替换所有列中的引号 for col in df.columns: df[col] = df[col].str.replace('"', '') # 生成CSV文件名(替换.xlsx后缀为.csv) csv_path = path_file[:-5] + '.csv' # 保存为CSV df.to_csv(csv_path, index=False, encoding='utf-8', sep=';', lineterminator='\r\n') sg.popup('所有文件转换完成!', title='完成')
关键修改说明
- 循环处理文件:新增
for path_file in path_files循环,逐个处理每个选中的Excel文件 - 空选择判断:增加用户未选文件时的提示,避免后续代码报错
- 简化表头处理:把原有的表头循环改成列表推导式,更简洁高效
- 引号替换优化:直接用
'"'代替'"',可读性更强(两者语义等价)
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

