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

Python with open()在Windows CMD/PS运行时相对路径报错排查

报错根因

触发FileNotFoundError是两个问题叠加导致的:

  • Python字符串里的反斜杠\是转义标识符,直接写在路径字符串里会被解析为转义符,最终传给open()的实际路径和你预期的路径不一致。
  • 写入模式调用open()时,不会自动创建路径中不存在的父文件夹,如果Keyboard\Program\log目录层级不存在,哪怕路径写对了也会触发找不到文件的错误。
可直接运行的修复代码

用标准库pathlib处理路径可以彻底规避转义、跨系统路径兼容问题,同时自动创建缺失的目录:

from datetime import datetime
from pathlib import Path

# 定义日志目录,正斜杠在Windows系统下可被正常识别,无需手动处理转义
log_directory = Path("Keyboard/Program/log")
# 递归创建所有不存在的父目录,目录已存在时不抛出异常
log_directory.mkdir(parents=True, exist_ok=True)

now = datetime.now()
time_suffix = now.strftime("%d-%m-%Y-%H-%M")
temp_file_path = log_directory / "_temp.txt"
final_log_path = log_directory / f"log-{time_suffix}.txt"

with open(temp_file_path, "w", encoding="utf-8") as f:
    f.write(str(final_log_path))
手动修复注意事项

如果坚持手动拼接字符串路径,必须满足两个要求:

  • 路径字符串加r前缀标记为原始字符串,避免反斜杠被识别为转义符,例如r"Keyboard\Program\log\_temp.txt";或者直接统一用正斜杠/写路径,Python在Windows下可自动适配。
  • 代码运行前手动创建Keyboard\Program\log完整目录层级,或者在调用open()前通过os.makedirs函数创建缺失目录,示例代码:
import os
os.makedirs(r"Keyboard\Program\log", exist_ok=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 07:30:49