1724 Stimmen

Wie erhalte ich den Dateinamen ohne die Erweiterung aus einem Pfad in Python?

Wie erhalte ich den Dateinamen ohne die Erweiterung aus einem Pfad in Python?

"/path/to/some/file.txt"    "file"

1voto

John Carrell Punkte 1375

Ich habe nicht sehr gründlich gesucht, aber ich habe niemanden gesehen, der Regex für dieses Problem verwendet hat.

Ich habe die Frage so interpretiert: "Geben Sie bei einem Pfad den Basisnamen ohne die Erweiterung zurück".

z.B..

"path/to/file.json" => "file"

"path/to/my.file.json" => "my.file"

In Python 2.7, wo wir noch ohne pathlib ...

def get_file_name_prefix(file_path):
    basename = os.path.basename(file_path)

    file_name_prefix_match = re.compile(r"^(?P<file_name_pre fix>.*)\..*$").match(basename)

    if file_name_prefix_match is None:
        return file_name
    else:
        return file_name_prefix_match.group("file_name_prefix")

get_file_name_prefix("path/to/file.json")
>> file

get_file_name_prefix("path/to/my.file.json")
>> my.file

get_file_name_prefix("path/to/no_extension")
>> no_extension

1voto

wolfrevo Punkte 6065

Wie sieht es mit den folgenden Punkten aus?

import pathlib
filename = '/path/to/dir/stem.ext.tar.gz'
pathlib.Path(filename).name[:-len(''.join(pathlib.Path(filename).suffixes))]
# -> 'stem'

oder dieses Äquivalent?

pathlib.Path(filename).name[:-sum(map(len, pathlib.Path(filename).suffixes))]

-2voto

John--- Punkte 29
# use pathlib. the below works with compound filetypes and normal ones
source_file = 'spaces.tar.gz.zip.rar.7z'
source_path = pathlib.Path(source_file)
source_path.name.replace(''.join(source_path.suffixes), '')
>>> 'spaces'

trotz der vielen funktionierenden Implementierungen, die oben beschrieben wurden, habe ich dieses ^ hinzugefügt, da es nur pathlib verwendet und für zusammengesetzte und normale Dateitypen funktioniert

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X