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

如何跳过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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:18:01