如何用Python读取网络驱动器多级子文件夹中Excel的指定工作表?
问题分析与修复方案
原代码存在多个关键问题导致无输出,逐一拆解并给出修复方案:
核心问题
- 未遍历层级文件夹:仅指定年度文件夹路径,没有递归遍历下属的月度、每日文件夹来定位Excel文件
- 路径判断逻辑失效:
filepath是文件夹路径而非文件,filepath.endswith(".xlsm")永远返回False,直接跳过后续处理 - 语法与变量错误:
sheet_name("ABC")是非法写法;files变量未定义;company列表未初始化 - 网络路径格式错误:Windows网络路径需用原始字符串或转义双反斜杠,避免转义字符干扰路径识别
修复后的代码
import pandas as pd import os # 初始化存储结果的列表 company = [] # 网络路径用原始字符串避免转义问题 root_path = r'\\MUMPRR09\1-Sector Reports\2022' # 递归遍历所有层级文件夹 for root, dirs, files in os.walk(root_path): for file in files: # 仅处理xlsm格式的Excel文件 if file.endswith(".xlsm"): file_full_path = os.path.join(root, file) try: # 读取指定工作表"ABC" df = pd.read_excel(file_full_path, sheet_name='ABC') # 获取第一行第一列的数据并添加到列表 a = df.iloc[0, 0] company.append(a) except Exception as e: # 捕获异常,避免单个文件出错中断整个程序 print(f"处理文件 {file_full_path} 时出错: {str(e)}") # 输出结果 print(company)
代码说明
- 用
os.walk()递归遍历年度→月度→每日的所有层级文件夹,自动定位所有Excel文件 - 用
os.path.join()拼接完整文件路径,避免路径格式错误 - 增加
try-except捕获异常(如文件损坏、工作表不存在等),保证程序持续运行 - 初始化
company列表,确保数据能正常存储 - 网络路径采用原始字符串
r'路径',解决转义字符识别问题
内容的提问来源于stack exchange,提问作者Bhagyashree
相关产品推荐
相关产品推荐

