В python, почему os.path.splitext
использует '.' как разделитель расширений вместо os.extsep
?
Python splitext
Ответ 1
os.extsep
определяется путем импорта os.path.extsep
. Но вы правы, os.path.splitext()
всегда использует .
, независимо от os.path.extsep
:
Из os.py
(3.2.2):
from os.path import (curdir, pardir, sep, pathsep, defpath, extsep, altsep,
devnull)
Из ntpath.py
(который становится os.path
)
extsep = '.'
[...]
def _get_dot(path):
if isinstance(path, bytes):
return b'.'
else:
return '.' # instead of return extsep! [Comment by me, not in source]
[...]
def splitext(p):
return genericpath._splitext(p, _get_sep(p), _get_altsep(p),
_get_dot(p))
Кроме того, из genericpath.py
:
def _get_dot(path):
if isinstance(path, bytes):
return b'.'
else:
return '.'
Итак, os.path()
действительно определяет разделитель расширений дважды.
Теперь это, вероятно, не имеет значения, потому что это не изменится в ближайшее время (это все равно на всех поддерживаемых платформах). Но в некотором роде он нарушает принцип СУХОЙ.