Почему путь python pathlib Path (''). Exists () возвращает True?

Специально для более старых версий Git большинство предложений не будут работать так хорошо. Если это так, я бы поместил отдельный .gitignore в каталог, где я хочу, чтобы контент включался независимо от других параметров и позволял там что нужно.

Например: /.gitignore

# ignore all .dll files
*.dll

/dependency_files/.gitignore

# include everything
!*

Таким образом, все файлы / dependency_files (даже DLL-файлы) включены в комплект.

3
задан mattm 13 July 2018 в 17:58
поделиться

1 ответ

Как и все сказанное, он разрешает текущий путь и, следовательно, существует, но вот почему

pathlib.Path является acutally подклассом pathlib.PurePath , который принимает текущий каталог, когда pathsegments (аргумент) пуст (эквивалентен '').

Вы можете доказать, что это эмпирически, [3]

from pathlib import PurePath
print(PurePath())
>>>> .

Я предполагаю, что преимущество в определении пути ('') будет таким же, как и Path ('.').

Исправить. Несмотря на то, что я не создатель этой библиотеки, я предполагаю, что это для синтаксиса и логических причин. Действительно, люди часто хотят ссылаться на текущий каталог, чтобы вычислить что-то динамически. Поэтому по той же причине . указывает на текущий каталог, создатель lib, вероятно, хотел бы написать вам что-то вроде этого

>>>> p = Path() # or possibly Path('.')
>>> [x for x in p.iterdir() if x.is_dir()]

, в котором будут перечислены подкаталоги.

В основном, см. Это как по умолчанию . Логично, что путь по умолчанию, возвращаемый Path(), был текущим каталогом. Таким образом, логически, пустое строковое значение должно иметь такое же поведение.

3
ответ дан scharette 17 August 2018 в 12:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: