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

Python实现无硬编码文件名/路径批量转换Excel为CSV文件

问题

我是Python新手,现在需要解决批量转换Excel文件的问题:用户上传的文件都存在/input_files目录下,里面有test1.xlsx、test2.xlsx等多个Excel文件。我已经能实现单个文件的转换(代码如下),但想去掉硬编码的文件名,实现自动读取所有.xlsx文件并批量转换成对应的CSV文件,输出到/input_files/input_csv_files目录下。

原始单文件转换代码:

import pandas as pd

file_path = "/Users/input_files/"

read_file = pd.read_excel(file_path + "test1.xlsx")

read_file.to_csv(file_path + "input_csv_files/test1.csv", index = None, header = True)

期望效果:

  • /input_files/test1.xlsx → /input_files/input_csv_files/test1.csv
  • /input_files/test2.xlsx → /input_files/input_csv_files/test2.csv
  • ……以此类推

解决方案

可以借助os模块遍历目标目录下的所有.xlsx文件,结合pandas完成批量转换。同时要提前确保输出目录存在,避免报错。修改后的代码如下:

import pandas as pd
import os

# 输入目录(根据实际路径调整)
input_dir = "/input_files"
# 输出目录
output_dir = os.path.join(input_dir, "input_csv_files")

# 确保输出目录存在,不存在则自动创建
os.makedirs(output_dir, exist_ok=True)

# 遍历输入目录下的所有文件
for filename in os.listdir(input_dir):
    # 只处理后缀为.xlsx的文件
    if filename.endswith(".xlsx"):
        # 拼接完整的Excel文件路径
        excel_full_path = os.path.join(input_dir, filename)
        # 生成对应的CSV文件名(替换后缀为.csv)
        csv_filename = os.path.splitext(filename)[0] + ".csv"
        csv_full_path = os.path.join(output_dir, csv_filename)
        
        # 读取Excel并保存为CSV
        df = pd.read_excel(excel_full_path)
        df.to_csv(csv_full_path, index=None, header=True)
        print(f"转换完成:{excel_full_path} → {csv_full_path}")

核心要点说明

  • 用os.listdir()遍历目录文件,通过endswith(".xlsx")精准筛选目标文件
  • os.path.splitext(filename)[0]提取不带后缀的文件名,方便生成对应的CSV文件名
  • os.makedirs(..., exist_ok=True)确保输出目录存在,即使目录已存在也不会抛出异常
  • 使用os.path.join()拼接路径,避免手动拼接字符串时出现路径分隔符(Windows/Linux差异)的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 13:40:02