如何用Python列出文件夹中含.xlsx/.xlsb/.xlsm格式的Excel文件?
解决方法:列出指定文件夹中的.xlsx、.xlsb、.xlsm文件
你的原代码仅检查.xls后缀,无法匹配.xlsx、.xlsb、.xlsm这类更长的后缀,所以达不到预期效果。以下是两种可靠的实现方式:
方法1:基于os模块修改
利用str.endswith()支持元组参数的特性,同时匹配多个目标后缀,还能兼容大小写命名的文件:
import os # 替换为你的目标文件夹路径 target_dir = "/path/to/your/folder" # 定义需要匹配的Excel后缀(包含大小写兼容) excel_extensions = (".xlsx", ".xlsb", ".xlsm", ".XLSX", ".XLSB", ".XLSM") # 遍历文件夹内的所有文件 for filename in os.listdir(target_dir): # 检查文件后缀是否在目标集合中 if filename.endswith(excel_extensions): print(filename)
如果想更简洁地处理大小写,可以用filename.lower().endswith((".xlsx", ".xlsb", ".xlsm"))替代上面的判断条件。
方法2:使用pathlib(Python3.4+推荐)
pathlib是Python标准库中更现代的文件路径处理模块,代码可读性更高:
from pathlib import Path # 替换为你的目标文件夹路径 target_dir = Path("/path/to/your/folder") # 遍历所有符合后缀的文件 for excel_file in target_dir.iterdir(): # 检查文件后缀(转为小写避免大小写问题) if excel_file.suffix.lower() in {".xlsx", ".xlsb", ".xlsm"}: print(excel_file.name)
也可以用glob方法直接匹配:
from pathlib import Path target_dir = Path("/path/to/your/folder") # 通配符匹配所有目标后缀(大小写兼容) for excel_file in target_dir.glob("*.[xX][lL][sS][xXbBmM]"): print(excel_file.name)
内容的提问来源于stack exchange,提问作者Rashmi Tiwari
相关产品推荐
相关产品推荐

