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

使用数组元素创建文件夹触发OSError [WinError 123]问题求助

问题解决:文件名含换行符导致的WinError 123

你的问题根源在于readlines()方法会保留文本文件中每行末尾的换行符\n,所以WordsList里的每个元素其实是类似"Ability\n"的字符串,拼接路径后就出现了非法的文件名格式。另外,Windows路径里的反斜杠\是转义字符,直接写可能会引发意外问题,建议用原始字符串处理。

修正步骤:

  • 读取每行时,用strip()去除换行符和前后空白;或者用rstrip('\n')只去除末尾换行(如果需要保留行首/行尾空格的话)。
  • 路径字符串前加r前缀,将其转为原始字符串,避免转义字符干扰。

修改后的代码:

import os
from queue import Empty
from icrawler.builtin import GoogleImageCrawler

# 用原始字符串处理路径,避免转义问题
with open(r"D:\Programming\ImageCollector\Words.txt", 'r') as Words:
    # 读取每行并去除换行符和前后空白
    WordsList = [line.strip() for line in Words]
    FolderPaths = []
    base_path = r"D:\Photos\Images"
    for word in WordsList:
        folder_path = os.path.join(base_path, word)
        print(folder_path)
        FolderPaths.append(folder_path)
    # 循环创建所有文件夹(原代码仅循环1次,可按需调整)
    for path in FolderPaths:
        # 加上exist_ok=True,避免文件夹已存在时报错
        os.makedirs(path, exist_ok=True)

关键说明:

  • line.strip():移除字符串开头和结尾的所有空白字符(包括\n、\r、空格等),确保文件夹名称合法干净。
  • 原始字符串r"...":让Python把路径里的\当作普通字符处理,不会解析成转义序列。
  • os.makedirs(path, exist_ok=True):如果目标文件夹已存在,不会抛出错误,增强代码健壮性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 21:10:29