如何使用xlrd在未知文件名时打开指定目录下的Excel文件?
实现方法
可以通过Python的glob或os模块匹配目标目录下的文件,找到符合扩展名/前缀规则的Excel文件后,再用xlrd打开。以下是具体实现:
方法一:用glob模块(推荐,支持通配符)
glob支持*(匹配任意字符)、?(匹配单个字符)等通配符,能快速定位文件:
1. 匹配目录下所有.xls文件
import glob import xlrd # 匹配所有.xls文件,取第一个匹配项 file_path = glob.glob(r'D:\New folder\*.xls')[0] book = xlrd.open_workbook(file_path) sheet = book.sheet_by_name("Sheet3")
2. 匹配前缀为"Exce"的.xls文件
import glob import xlrd # 匹配以Exce开头的.xls文件 file_path = glob.glob(r'D:\New folder\Exce*.xls')[0] book = xlrd.open_workbook(file_path) sheet = book.sheet_by_name("Sheet3")
方法二:用os模块遍历目录
通过遍历目录下的所有文件,手动判断文件名是否符合规则:
import os import xlrd dir_path = r'D:\New folder' target_file = None # 遍历目录找符合条件的文件 for filename in os.listdir(dir_path): # 可按需调整判断条件:比如仅判断扩展名,或仅判断前缀 if filename.endswith('.xls') and filename.startswith('Exce'): target_file = os.path.join(dir_path, filename) break if target_file: book = xlrd.open_workbook(target_file) sheet = book.sheet_by_name("Sheet3") else: print("未找到符合条件的Excel文件")
注意事项
- 如果目录下有多个符合条件的文件,上述代码默认取第一个匹配项。若需处理所有文件,可去掉
break循环处理;若要避免误匹配,建议添加文件数量校验逻辑。 - 建议添加异常处理,避免因文件不存在、损坏等情况导致脚本崩溃:
import glob import xlrd try: file_path = glob.glob(r'D:\New folder\Exce*.xls')[0] book = xlrd.open_workbook(file_path) sheet = book.sheet_by_name("Sheet3") except IndexError: print("未找到符合条件的Excel文件") except xlrd.XLRDError as e: print(f"Excel文件读取失败:{e}") except Exception as e: print(f"未知错误:{e}")
内容的提问来源于stack exchange,提问作者GD201
相关产品推荐
相关产品推荐

