如何跳过sheet.values空值存储有效内容为字符串并调用makedirs创建目录
错误原因
你之前触发index out of bounds报错的核心原因是硬编码访问sheet.values的固定索引,当Excel实际行数少于你写的索引值时就会越界。你更新后的代码存在缩进错误,且行列遍历逻辑颠倒,导致无法正常生成目录。
优化后可运行代码
import os import pandas as pd # 设定工作目录 os.chdir("C:\\Users\\NAME\\desktop") # 读取Excel文件 workbook = pd.ExcelFile('Example.xlsx') sheet = workbook.parse('Sheet1', header=None) # 加header=None避免把第一行当做表头吃掉 # 打印当前工作目录 current_path = os.getcwd() print("当前工作目录为 %s" % current_path) # 遍历每一行数据,idx从0开始,+1对应你原来的1、2、3序号 for idx, row_data in enumerate(sheet.values): # 跳过全空行 if pd.isna(row_data).all(): continue # 过滤该行的空单元格 valid_cells = [str(item) for item in row_data if not pd.isna(item)] # 目录名生成逻辑二选一,不需要的注释掉即可 # 逻辑1:和你初始代码一致,用序号作为分隔符拼接该行所有内容 dir_name = f"{idx+1}".join(valid_cells) # 逻辑2:和你更新后代码一致,用序号作为前缀拼接内容 # dir_name = f"{idx+1}{''.join(valid_cells)}" try: os.makedirs(dir_name, exist_ok=True) print("成功创建目录 %s" % dir_name) except OSError: print("创建目录 %s 失败" % dir_name)
优化说明
- 自动适配可变行数:通过
enumerate遍历sheet.values,有多少有效行就循环多少次,不会出现索引越界问题 - 空值自动过滤:全空行直接跳过,行内的空单元格也会自动剔除,不会生成无效目录
- 简化冗余代码:删除了原来重复21次的目录创建逻辑,所有处理统一在循环内完成
- 兼容两种目录命名逻辑:你可以根据自己的实际需求选择对应的目录名生成方式
内容的提问来源于stack exchange,提问作者PythonStarter
相关产品推荐
相关产品推荐

