Pathlib调用mkdir抛出FileExistsError但目标路径实际不存在
问题原因
pathlib.Path默认不会自动解析路径中的波浪号~为当前用户的home目录,你传入带~的路径时,Python会将~识别为普通目录名,在脚本运行的当前工作目录下创建~子目录,再在其中生成.local/share/mark_py的层级结构,而非在你预期的用户家目录下创建目录。
对应你遇到的现象解释:
- 首次执行无报错:当前工作目录下成功创建了
./~/.local/share/mark_py路径,你在家目录下查找对应路径自然找不到生成的目录 - 第二次执行抛出
FileExistsError:第一次已经在当前工作目录下生成了对应路径,mkdir()默认不允许重复创建已存在的目录,因此触发异常
你可以进入脚本执行时的工作目录,即可看到名为~的子目录,内部就是之前创建的目录结构。
修复方案
调用Path对象的expanduser()方法完成波浪号的路径解析,同时可以添加exist_ok=True参数避免重复执行时报错,修改后代码如下:
from pathlib import Path data_path = Path("~/.local/share/mark_py").expanduser() data_path.mkdir(exist_ok=True)
内容的提问来源于stack exchange,提问作者10101001010
相关产品推荐
相关产品推荐

