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

如何用Pandas与Glob批量转换.xlsx为.csv及解决相关报错

解决.xlsx转.csv并遍历文件夹的问题

首先来说你遇到的TypeError: 'module' object is not callable错误——这大概率是因为你直接把glob模块当成函数调用了!比如错误写法是:

import glob
files = glob("*.xlsx")  # 这里错把模块当函数用了

正确的做法是调用模块里的glob()函数,两种方式任选其一:

# 方式1:导入模块后调用方法
import glob
files = glob.glob("JanuaryDataSentToResourcePro/*.xlsx")

# 方式2:直接导入glob函数
from glob import glob
files = glob("JanuaryDataSentToResourcePro/*.xlsx")

接下来解决核心的.xlsx转csv问题,Python标准库没法直接处理xlsx文件,推荐用pandas来做,代码简洁易读,非常适合新手。

完整实现步骤

1. 安装依赖库

打开终端/命令行,安装pandas和openpyxl(pandas读取xlsx需要openpyxl作为引擎):

pip install pandas openpyxl

2. 完整代码

import pandas as pd
from glob import glob
import os

# 目标文件夹路径
folder_path = "JanuaryDataSentToResourcePro"

# 获取文件夹下所有xlsx文件(兼容不同系统路径)
xlsx_files = glob(os.path.join(folder_path, "*.xlsx"))

# 遍历每个文件进行转换
for file in xlsx_files:
    # 读取xlsx文件
    df = pd.read_excel(file, engine="openpyxl")
    # 生成csv文件名:替换原后缀为.csv
    csv_file = os.path.splitext(file)[0] + ".csv"
    # 保存为csv,避免中文乱码+不写入多余索引列
    df.to_csv(csv_file, index=False, encoding="utf-8-sig")
    print(f"已完成转换:{file} -> {csv_file}")

代码细节说明

  • os.path.join(folder_path, "*.xlsx"):自动适配Windows/macOS/Linux的路径分隔符,避免路径错误
  • os.path.splitext(file)[0]:提取不带后缀的原文件名,保证转换后文件名和原文件一致
  • index=False:不写入pandas自动生成的索引列,让csv内容和原xlsx保持一致
  • encoding="utf-8-sig":解决Windows下打开csv时的中文乱码问题

不想用pandas?试试原生openpyxl方案

如果不想安装pandas,也可以用openpyxl直接操作xlsx文件,代码稍繁琐但轻量化:

from openpyxl import load_workbook
from glob import glob
import os
import csv

folder_path = "JanuaryDataSentToResourcePro"
xlsx_files = glob(os.path.join(folder_path, "*.xlsx"))

for file in xlsx_files:
    wb = load_workbook(file)
    ws = wb.active  # 获取第一个工作表(如果需要指定表名可以用wb["表名"])
    csv_file = os.path.splitext(file)[0] + ".csv"
    
    with open(csv_file, "w", newline="", encoding="utf-8-sig") as f:
        writer = csv.writer(f)
        # 逐行读取并写入csv
        for row in ws.iter_rows(values_only=True):
            writer.writerow(row)
    print(f"已完成转换:{file} -> {csv_file}")

排查小技巧

如果还是无法转换,先检查这几点:

  • 文件夹路径是否正确?可以用print(os.path.exists(folder_path))验证路径是否存在
  • 目标xlsx文件是否损坏?手动打开确认能正常读取
  • 依赖库是否安装成功?在Python交互环境输入import pandas和import openpyxl验证

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:41:05