Python处理像素艺术Excel文件报错:ws相关行提示文件不存在
问题与解决方案
错误原因分析
你遇到的"No such file or directory"错误核心是找不到PixelArt.xlsx文件,和你标注的cells = tuple(ws['A1':'AC13'])行或ws操作无关,属于文件路径配置问题。另外代码里cells行被错误的双引号包裹,会导致变量未定义,触发NameError,这是需要同步修复的问题。
分步解决方案
1. 修正文件路径
- 最简单的方式:把
PixelArt.xlsx和Python脚本放在同一个文件夹里 - 或者使用绝对路径(避免路径歧义),示例:
# Windows系统示例 wb = openpyxl.load_workbook("C:/Users/你的用户名/Documents/PixelArt.xlsx") # Linux/macOS系统示例 wb = openpyxl.load_workbook("/home/你的用户名/Documents/PixelArt.xlsx")
2. 修复代码中的变量定义与注释
把包裹cells行的错误双引号去掉,用#做注释(如果需要注释),确保变量正常生效:
import openpyxl from openpyxl.styles import PatternFill # 确保路径正确,相对路径要求文件和脚本同目录 wb = openpyxl.load_workbook("PixelArt.xlsx") ws = wb.active # 取消错误的双引号,让变量定义生效 cells = tuple(ws['A1':'AC13']) color_dict = {} for row in cells: for cell in row: # 检查单元格是否存在填充色 if cell.fill.patternType is not None: color = cell.fill.fgColor.rgb # 统计颜色出现次数 if color not in color_dict: color_dict[color] = 1 else: color_dict[color] += 1 # 将次数写入对应单元格 ws[cell.coordinate].value = color_dict[color] # 必须调用save才能保存修改后的内容 wb.save("Modified_PixelArt.xlsx") print(color_dict)
额外提示
- 原代码缺少
wb.save(),运行后单元格修改不会被保存,一定要加上 - 如果需要遍历整个工作表的单元格,可替换为
ws.iter_rows(),示例:# 遍历所有有数据的行和列 for row in ws.iter_rows(values_only=False): for cell in row: # 后续逻辑保持不变
内容的提问来源于stack exchange,提问作者Caleb deRidder
相关产品推荐
相关产品推荐

