pathlib mkdir создает папку по имени файла - PullRequest
0 голосов
/ 02 июля 2019

В моей машине есть следующая существующая папка

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) должен создавать папки logs, myfolder или scripts и т. Д., Если они не существуют.

Но он создает папку с именем some.txt внутри папки logs, хотя это не папка parents. Почему это так?

Я понимаю, что обходной путь должен использовать pathlib.Path("D:\scripts\myfolder\logs")

1 Ответ

2 голосов
/ 02 июля 2019

Весь смысл mkdir заключается в создании каталога, на который указывает его аргумент.Передача parents=True создает родительские папки , а также .

Создайте новый каталог по этому заданному пути.[...] Если родители верны, любые пропавшие родители этого пути создаются по мере необходимости; [1]

Если вы хотите убедиться, что содержащий каталог существует, создайте parent вашего пути:

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