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

如何在Python中使用glob指定目录获取Excel文件?

问题分析与解决方案

嘿,我来帮你排查问题啦!你的代码返回空列表的核心原因是路径拼接时漏掉了目录分隔符。

Windows系统中目录路径用\分隔,而你直接写direc + "*.xls*"会把目录名和文件模式硬连在一起,生成类似C:\path\to\dir1*.xls*的错误路径——这个路径里的dir1和*.xls*没有分隔开,glob根本找不到匹配的文件。

下面给你几种靠谱的解决方法:

方法1:用os.path.join自动拼接路径(推荐跨平台)

os.path.join会根据当前操作系统自动选择正确的路径分隔符,不管是Windows的\还是Linux/macOS的/都能兼容,避免手动拼接出错:

import glob
import os

dirs = ['C:\\path\\to\\dir1','C:\\path\\to\\dir2','C:\\path\\to\\dir3']

for direc in dirs:
    # 用os.path.join拼接目录和文件模式
    file_pattern = os.path.join(direc, "*.xls*")
    excel_files = glob.glob(file_pattern)
    print(f"目录 {direc} 下的Excel文件:", excel_files)

方法2:手动添加路径分隔符(仅适用于Windows)

如果你确定只在Windows环境运行,可以手动给目录路径加上转义后的\\分隔符:

import glob

dirs = ['C:\\path\\to\\dir1','C:\\path\\to\\dir2','C:\\path\\to\\dir3']

for direc in dirs:
    excel_files = glob.glob(direc + "\\*.xls*")
    print(f"目录 {direc} 下的Excel文件:", excel_files)

方法3:用pathlib(Python 3.4+ 现代写法)

pathlib是Python 3.4引入的面向对象路径处理模块,代码更简洁易读:

from pathlib import Path

dirs = ['C:\\path\\to\\dir1','C:\\path\\to\\dir2','C:\\path\\to\\dir3']

for direc in dirs:
    dir_path = Path(direc)
    # 获取所有xls/xlsx文件,返回Path对象列表
    excel_files = list(dir_path.glob("*.xls*"))
    # 如果需要字符串格式的路径,可转换
    excel_files_str = [str(file) for file in excel_files]
    print(f"目录 {direc} 下的Excel文件:", excel_files_str)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:40:39