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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:05:18