LINUX.ORG.RU

История изменений

Исправление Psych218, (текущая версия) :

Принимается.

Тогда хотя бы так:

def strip_suffixes(path):
    EXTS = (".xz", ".raw", ".tar")
    while any(path.endswith(x) for x in EXTS):
        path = os.path.splitext(path)[0]
    return path

Вообще по уму, оно ещё и делает не то, как называется. Получается лапша — видя где-нибудь strip_suffixes(path), думаешь, что оно любые расширения отсекает, приходится лезть в код фукнции, чтобы узнать какие. Эти суффиксы бы не внутри задавать хорошо. Как-нибудь так:

def strip_suffixes(path, *suffixes):
    filename, ext = os.path.splitext(path)
    if ext not in suffixes:
        return path
    return strip_suffixes(filename, *suffixes)

Ну или без рекурсии через while по вкусу:

def strip_suffixes(path, *exts):
    while any(path.endswith(x) for x in exts):
        path = os.path.splitext(path)[0]
    return path

И вызывать соответственно как strip_suffixes(path, ".tar", ".xz", ".raw"). Было бы гораздо логичнее.

Исправление Psych218, :

Принимается.

Тогда хотя бы так:

def strip_suffixes(path):
    EXTS = (".xz", ".raw", ".tar")
    while any(path.endswith(x) for x in EXTS):
        path = os.path.splitext(path)[0]
    return path

Вообще по уму, оно ещё и делает не то, как называется. Получается лапша — видя где-нибудь strip_suffixes(path), думаешь, что оно любые расширения отсекает, приходится лезть в код фукнции, чтобы узнать какие. Эти суффиксы бы не внутри задавать хорошо. Как-нибудь так:

def strip_suffixes(path, *suffixes):
    filename, ext = os.path.splitext(path)
    if ext not in suffixes:
        return path
    return strip_suffixes(filename, *suffixes)

Ну или без рекурсии через while по вкусу. И вызывать соответственно как strip_suffixes(path, ".tar", ".xz", ".raw"). Было бы гораздо логичнее.

Исправление Psych218, :

Принимается.

Тогда хотя бы так:

def strip_suffixes(path):
    EXTS = (".xz", ".raw", ".tar")
    t = path
    while any(t.endswith(x) for x in EXTS):
        t = os.path.splitext(t)[0]
    return t

Вообще по уму, оно ещё и делает не то, как называется. Получается лапша — видя где-нибудь strip_suffixes(path), думаешь, что оно любые расширения отсекает, приходится лезть в код фукнции, чтобы узнать какие. Эти суффиксы бы не внутри задавать хорошо. Как-нибудь так:

def strip_suffixes(path, *suffixes):
    filename, ext = os.path.splitext(path)
    if ext not in suffixes:
        return path
    return strip_suffixes(filename, *suffixes)

Ну или без рекурсии через while по вкусу. И вызывать соответственно как strip_suffixes(path, ".tar", ".xz", ".raw"). Было бы гораздо логичнее.

Исходная версия Psych218, :

Принимается.

Тогда хотя бы так:

def strip_suffixes(path):
    EXTS = (".xz", ".raw", "tar")
    t = path
    while any(t.endswith(x) for x in EXTS):
        t = os.path.splitext(t)[0]
    return t

Вообще по уму, оно ещё и делает не то, как называется. Получается лапша — видя где-нибудь strip_suffixes(path), думаешь, что оно любые расширения отсекает, приходится лезть в код фукнции, чтобы узнать какие. Эти суффиксы бы не внутри задавать хорошо. Как-нибудь так:

def strip_suffixes(path, *suffixes):
    filename, ext = os.path.splitext(path)
    if ext not in suffixes:
        return path
    return strip_suffixes(filename, *suffixes)

Ну или без рекурсии через while по вкусу. И вызывать соответственно как strip_suffixes(path, ".tar", ".xz", ".raw"). Было бы гораздо логичнее.