В 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() действительно определяет разделитель расширений дважды.
Теперь это, вероятно, не имеет значения, потому что это не изменится в ближайшее время (это все равно на всех поддерживаемых платформах). Но в некотором роде он нарушает принцип СУХОЙ.