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

Python使用x模式无法创建文件,执行代码触发FileNotFoundError

解决open()用x模式创建文件时触发FileNotFoundError的问题

嘿,我一眼就发现问题所在了——你遇到的FileNotFoundError不是因为report.txt已经存在,而是**add这个父目录根本不存在**!

open()函数的x模式虽然是用来创建新文件的,但它没有自动创建父目录的能力。当你尝试打开add/report.txt时,如果add文件夹还没被创建,Python就会直接抛出这个错误,根本轮不到FileExistsError的判断环节。

修复方案

你需要先确保add目录存在,再去操作文件。这里给你两种常用的实现方式:

方式一:用pathlib(推荐,语法更简洁现代)

from pathlib import Path

# 先创建add目录,不存在就建,存在也不会报错
Path('add').mkdir(parents=True, exist_ok=True)

# 之后再执行你的文件操作逻辑
try:
    with open('add/report.txt', 'x') as f:
        pass
except FileExistsError:
    pass
finally:
    with open('add/report.txt', 'a') as f:
        f.write(message)
        f.write('-------------------')

mkdir()的parents=True参数会帮你创建所有缺失的父目录,exist_ok=True则避免了目录已存在时的报错。

方式二:用os模块(兼容旧版Python)

import os

# 检查add目录是否存在,不存在就创建
if not os.path.exists('add'):
    os.makedirs('add')

# 原有的文件操作代码
try:
    with open('add/report.txt', 'x') as f:
        pass
except FileExistsError:
    pass
finally:
    with open('add/report.txt', 'a') as f:
        f.write(message)
        f.write('-------------------')

额外优化小技巧

其实你可以简化整个逻辑:a模式本身就支持"文件不存在则创建,存在则追加"的功能,完全可以省去try-except块,代码会更简洁:

from pathlib import Path

Path('add').mkdir(parents=True, exist_ok=True)

with open('add/report.txt', 'a') as f:
    f.write(message)
    f.write('-------------------')

这样做和你原本的逻辑效果完全一致,但代码更易读维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:33:08