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

OSError: [Errno 36]文件名过长报错问题技术求助

解决OSError: [Errno 36] File name too long错误

看你这个报错信息,一眼就揪出问题根源了——你把一整个文件名列表直接拼到了输出路径里,结果生成了一个长得离谱的文件名,系统肯定扛不住啊!你看报错里的路径:

OSError: [Errno 36] File name too long: "/media/than/3E7019A6701965C5//nhandt_MaskRCNN_Nouth/['1.JPG', '18-10.JPG', ...].jpg"

这明显是把列表对象直接转成字符串当文件名用了,完全不符合系统对文件名的长度限制(Linux下一般单文件名最大255字符,路径总长度也有限制)。

具体解决步骤:

  • 遍历文件名列表,逐个处理单张图片
    你应该是在批量处理图片,但错误地把整个列表当成单个文件名来使用。改成循环遍历列表里的每个文件名,单独处理每张图:

    # 你的文件名列表
    image_files = ['1.JPG', '18-10.JPG', '18-11.JPG', ...]
    font = ImageFont.truetype('/usr/share/fonts/your-font-file.ttf')  # 补全你的字体路径
    
    for img_name in image_files:
        # 加载单张图片
        img = Image.open(f"/media/than/3E7019A6701965C5/nhandt_MaskRCNN_Nouth/{img_name}")
        # 这里添加你的图片处理逻辑(比如用ImageDraw添加文字)
        draw = ImageDraw.Draw(img)
        # 示例:在图片左上角添加文字
        draw.text((10, 10), "Processed", font=font, fill=(255,0,0))
        # 生成正确的输出路径——用单个文件名,而不是整个列表
        output_path = f"/media/than/3E7019A6701965C5/nhandt_MaskRCNN_Nouth/processed_{img_name}"
        # 保存处理后的图片
        img.save(output_path)
    
  • 检查文件名拼接逻辑
    绝对不要把列表、字典这类复杂对象直接转成字符串拼到路径里。如果是需要生成批量处理的汇总文件,给它起一个简洁的名字,比如batch_processed.jpg,而不是把所有输入文件名都堆进去。

  • 验证文件名长度
    可以提前检查生成的路径长度,避免超出系统限制:

    output_path = "你的输出路径"
    if len(output_path) > 255:
        print(f"警告:路径过长!{output_path}")
        # 这里可以调整命名规则,比如缩短文件名前缀
    

只要修正了“把列表当文件名”这个逻辑错误,这个报错就能解决啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:05:16