Подтвердить что ты не робот

Python splitext

В python, почему os.path.splitext использует '.' как разделитель расширений вместо os.extsep?

4b9b3361

Ответ 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() действительно определяет разделитель расширений дважды.

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