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

使用Python logging模块写日志到指定目录时报OSERROR如何解决

错误原因分析
  • 代码中调用了os.path.join()方法,但未导入os模块,这是最直接的触发报错的原因
  • 未提前判断目标存储目录是否存在,如果c:\\users\\documents\\路径实际不存在,也会触发参数无效报错
  • Windows系统下路径如果直接写反斜杠容易出现转义问题,更推荐使用原始字符串或正斜杠格式定义路径
正确实现步骤
  1. 导入所有依赖模块:需要同时导入os、logging、time三个模块
  2. 优先使用原始字符串定义存储路径,避免转义异常
  3. 提前校验目标目录是否存在,不存在则自动创建
  4. 拼接日志文件名后初始化FileHandler

可运行的示例代码

import logging
import time
import os

# 用原始字符串定义路径,避免转义问题,无需额外加末尾分隔符
log_dir = r'c:\users\documents'
# 校验目录是否存在,不存在则递归创建
if not os.path.exists(log_dir):
    os.makedirs(log_dir)
# 拼接日志文件完整路径
log_file_path = os.path.join(log_dir, time.strftime('log_%Y-%m-%d.log'))
# 初始化文件处理器,可指定encoding避免中文乱码
hndlr = logging.FileHandler(log_file_path, encoding='utf-8')

# 后续可按需添加日志格式配置
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
hndlr.setFormatter(formatter)
logger = logging.getLogger()
logger.addHandler(hndlr)
logger.setLevel(logging.INFO)

如果你确认目标目录一定存在,也可以省略目录创建的步骤,但必须保证导入了os模块,否则os.path.join无法正常调用,必然会触发报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:24:04