使用变量(os.path)在目录创建文件夹时遇WinError 123错误
问题:读取TXT文件创建文件夹时触发WinError 123错误
你编写了以下Python代码,试图通过读取TXT文件中的每行内容作为文件夹名来创建文件夹:
import os folderdir = r'C:\Users\myname\Documents\Folders' txtfile = r'C:\Users\myname\Documents\foldernames.txt' with open(txtfile) as f: for line in f.readlines(): folderpath = folderdir + "\\" + line print(folderpath) os.makedirs(folderpath)
打印出来的路径看起来正常,例如:
C:\Users\myname\Documents\Folders\Albert#2000555
但执行时却抛出错误:
OSError: [WinError 123] 文件名、目录名或卷标语法不正确: 'C:\Users\myname\Documents\Folders\Albert#2000555\n'
问题原因
错误信息里的路径末尾带有\n(换行符)——f.readlines()读取每一行时,会保留文本中行尾的换行符。而Windows系统不允许文件名或路径中包含换行符,这直接导致了语法错误。
解决方法
对读取到的每一行内容,使用strip()方法去除首尾空白字符(包括换行符、空格、制表符等),或者用rstrip('\n')精准去除行尾换行符。同时推荐使用os.path.join()拼接路径,提升代码的跨平台兼容性。
修改后的代码示例:
import os folderdir = r'C:\Users\myname\Documents\Folders' txtfile = r'C:\Users\myname\Documents\foldernames.txt' with open(txtfile) as f: for line in f.readlines(): # 去除首尾空白字符,包括换行符 folder_name = line.strip() # 用os.path.join自动处理路径分隔符 folderpath = os.path.join(folderdir, folder_name) print(folderpath) # exist_ok=True避免文件夹已存在时抛出错误 os.makedirs(folderpath, exist_ok=True)
内容的提问来源于stack exchange,提问作者At Bay
相关产品推荐
相关产品推荐

