使用数组元素创建文件夹触发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
相关产品推荐
相关产品推荐

