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

基于Excel表格批量创建指定路径文件夹的代码问题求助

问题描述

我是新手,尝试通过openpyxl读取Excel表格(含行列),在指定路径D:\Roberto下批量创建不同名称的文件夹,以下是我的代码:

import openpyxl
import os

w = openpyxl.load_workbook("test1.xlsx")

worksheet = w.active


for i in range(1 , worksheet.max_row):
    for j in worksheet.iter_cols(1,worksheet.max_column):
        end =  "D:\\Roberto"
        os.makedirs ((j[i].value), end == "\t\t" )
    os.makedirs( (j[i]) , (" ") )

说明:我的系统无法使用Pandas,因此采用openpyxl,以下是用于测试的代码:

import openpyxl   
w = openpyxl.load_workbook("test1.xlsx")
worksheet = w.active
for i in range(0 , worksheet.max_row):
    for j in worksheet.iter_cols(1,worksheet.max_column):
        print(j[i].value, end = "\t\t")
    print(" ")

目前程序运行异常:仅为第一行单元格创建文件夹,且文件夹保存路径为.py文件所在目录,而非指定路径,请求帮助解决。

问题分析与修正

问题点梳理

  1. os.makedirs参数使用错误:你写的os.makedirs ((j[i].value), end == "\t\t" )完全不符合函数要求,该函数第二个参数是exist_ok(布尔值,控制已存在文件夹时是否报错),不是条件判断。同时你没有把指定路径和文件夹名称拼接,导致文件夹默认创建在脚本所在目录。
  2. 循环逻辑混乱:外层循环从索引1开始,会跳过Excel第一行;内层循环结束后执行的os.makedirs( (j[i]) , (" ") )中,j只保留了最后一列的单元格对象,j[i]是单元格对象而非值,会引发错误,且只会处理最后一列内容。

修正后的代码

import openpyxl
import os

# 定义目标根路径
target_root = "D:\\Roberto"
# 先确保根路径存在,不存在则创建
if not os.path.exists(target_root):
    os.makedirs(target_root)

# 加载Excel文件
wb = openpyxl.load_workbook("test1.xlsx")
ws = wb.active

# 遍历所有行,直接获取单元格值(values_only=True)
for row in ws.iter_rows(values_only=True):
    # 遍历当前行的每个单元格值
    for name in row:
        # 跳过空值,避免创建无效文件夹
        if not name:
            continue
        # 拼接完整的文件夹路径,自动适配系统分隔符
        folder_full_path = os.path.join(target_root, str(name))
        # 创建文件夹,exist_ok=True避免已存在时报错
        os.makedirs(folder_full_path, exist_ok=True)

代码说明

  • 用os.path.join拼接路径,避免手动写路径分隔符出错,同时兼容不同系统
  • iter_rows(values_only=True)直接读取单元格的值,无需处理单元格对象,更简洁
  • 增加空值判断,防止创建名称为空或None的无效文件夹
  • 提前创建目标根路径D:\Roberto,确保后续子文件夹能正确生成在指定位置
  • exist_ok=True参数保证如果文件夹已存在,程序不会抛出异常,继续执行

内容的提问来源于stack exchange,提问作者Robertus83

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:10:18