基于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文件所在目录,而非指定路径,请求帮助解决。
问题分析与修正
问题点梳理
os.makedirs参数使用错误:你写的os.makedirs ((j[i].value), end == "\t\t" )完全不符合函数要求,该函数第二个参数是exist_ok(布尔值,控制已存在文件夹时是否报错),不是条件判断。同时你没有把指定路径和文件夹名称拼接,导致文件夹默认创建在脚本所在目录。- 循环逻辑混乱:外层循环从索引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
相关产品推荐
相关产品推荐

