Python splitext - PullRequest
       23

Python splitext

12 голосов
/ 16 сентября 2011

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

1 Ответ

5 голосов
/ 16 сентября 2011

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

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

...