使用Python pathlib创建目录报错,读取配置文件目录名异常求助
问题分析与解决方法
你猜的没错,问题就是读取的目录名末尾带有换行符\n。从文本文件读取内容时,read()、readline()这类方法会保留文件里的换行符,而Windows系统不允许路径中包含\n这种控制字符,所以触发了WinError 123。
解决步骤:
- 读取
config.txt的内容后,用strip()方法清除字符串两端的空白字符(包括换行符\n、回车符\r、空格等) - 另外注意Windows路径的写法,建议用原始字符串(前缀加
r)或者双反斜杠,避免转义序列引发的潜在问题
修正后的代码:
from pathlib import Path # 用原始字符串定义基础路径,避免转义问题 DESTINATION_LOC_DEFAULT = Path(r'C:\work') # 读取配置文件并处理目录名 with open('config.txt', 'r') as f: # strip()彻底清除前后空白字符,包括换行符 new_dir = f.read().strip() # 拼接目标路径 DEST_DIR = DESTINATION_LOC_DEFAULT / new_dir print(DEST_DIR) # 直接调用mkdir,DEST_DIR已经是Path对象,无需再包装 DEST_DIR.mkdir(parents=True, exist_ok=True)
关键细节说明:
strip():不仅能去掉换行符,还能处理配置文件中可能意外出现的首尾空格,让目录名更干净- 原始字符串
r'C:\work':防止Python将\w这类字符误解析为转义序列(虽然此处\w不是有效转义,但养成习惯能避免后续类似问题) - 无需重复创建Path对象:
DEST_DIR本身就是Path实例,直接调用mkdir()即可,原代码里的Path(DEST_DIR)属于冗余操作
内容的提问来源于stack exchange,提问作者cappo
相关产品推荐
相关产品推荐

