pathlib mkdir通过文件名创建一个文件夹

时间:2019-07-02 17:57:36

标签: python-3.x pathlib

我的机器中已经存在以下文件夹

D:\scripts\myfolder

我希望我的脚本创建一个名为logs的文件夹并在其中创建文件log.txt。所以路径看起来像

D:\scripts\myfolder\logs\somelog.txt

所以我用

p = pathlib.Path("D:\scripts\myfolder\logs\somelog.txt")
p.mkdir(parents=True, exisit_ok=True)

现在

print(p.parents[0]) ==> D:\scripts\myfolder\logs

print(p.parents[1]) ==> D:\scripts\myfolder

print(p.parents[2]) ==> D:\scripts

因此,根据Path.mkdir文档 p.mkdir(parents=True, exisit_ok=True)应该创建文件夹logsmyfolderscripts,依此类推(如果不存在)。

尽管它不是some.txt的一部分,但它在logs文件夹中创建了一个名为parents的文件夹。为什么会这样?

我知道解决方法是使用pathlib.Path("D:\scripts\myfolder\logs")

1 个答案:

答案 0 :(得分:2)

mkdir的全部要点是创建由其参数指向的目录。传入parents=True还会另外创建父文件夹

  

在此给定路径下创建一个新目录。 [...]如果父母为真,则根据需要创建此路径中所有丢失的父母; [1]

如果要确保包含目录存在,请创建路径的parent

p = pathlib.Path("D:\scripts\myfolder\logs\somelog.txt")
p.parent.mkdir(parents=True, exist_ok=True)