Предположим, что в текущем рабочем каталоге у вас есть файл с именем "blabarfoo
". В конце имени файла отсутствует расширение файла, например ".txt
" или ".mp3
". Рассмотрим следующие 3строки кода:
import os
import pathlib
path1 = pathlib.Path(os.getcwd()) / "blahbarfoo"
Я ожидаю, что следующая строка кода вернет true, и это так:
pathlib.Path(path1).exists()
Однако я удивлен, обнаружив, что следующий вызов exists()
также возвращает true:
path2 = pathlib.Path(os.getcwd()) / "blahbarfoo........"
pathlib.Path(path1).exists()
Обратите внимание, что нет файла с именем blahbarfoo........
Может кто-нибудь объяснить мне, почему точки в конце пути ничего не влияют?
Дополнительный код, демонстрирующий явление, показан ниже:
import os
import pathlib
def get_path_stats(xpath):
stats = '\n'.join([str(x[0]).ljust(10) + str(x[1]) for x in [
("*"* 60, ""),
("path:", xpath),
['is_file:', pathlib.Path(xpath).is_file()],
["exists:", pathlib.Path(xpath).exists()],
["is dir:", pathlib.Path(xpath).is_dir()],
("*"* 60, ""),
]])
return stats
p1 = pathlib.Path(os.getcwd()) / "blahb"
p2 = pathlib.Path(os.getcwd()) / "blahbarfoo"
p3 = pathlib.Path(os.getcwd()) //"blahbarfoo."
p4 = pathlib.Path(os.getcwd()) / "blahbarfoo........"
ps = [p1, p2, p3, p4]
for p in ps:
status = get_path_stats(p)
print(status)
У нас есть следующий вывод:
************************************************************
path: D:\FILE_MGMT_PYTHON\blahb
is_file: False
exists: False
is dir: False
************************************************************
************************************************************
path: D:\FILE_MGMT_PYTHON\blahbarfoo
is_file: True
exists: True
is dir: False
************************************************************
************************************************************
path: D:\FILE_MGMT_PYTHON\blahbarfoo.
is_file: True
exists: True
is dir: False
************************************************************
************************************************************
path: D:\FILE_MGMT_PYTHON\blahbarfoo........
is_file: True
exists: True
is dir: False
************************************************************
Я подумал, может ли .
соответствовать нулю или более символов, но pythonговорит, что файл blahb.
не существует:
************************************************************
path: D:\FILE_MGMT_PYTHON\blahb.
is_file: False
exists: False
is dir: False
************************************************************