Gibt es eine Funktion zum Extrahieren der Erweiterung aus einem Dateinamen?
Antworten
Zu viele Anzeigen?
weiyixie
Punkte
495
Obwohl es ein altes Thema ist, aber ich frage mich, warum es keine Erwähnung eine sehr einfache api von Python genannt rpartition in diesem Fall:
um die Erweiterung eines bestimmten absoluten Dateipfads zu erhalten, können Sie einfach eingeben:
filepath.rpartition('.')[-1]
Beispiel:
path = '/home/jersey/remote/data/test.csv'
print path.rpartition('.')[-1]
erhalten Sie: 'csv'
soheshdoshi
Punkte
549
PascalVKooten
Punkte
19311
Ich bin überrascht, dass dies noch nicht erwähnt wurde:
import os
fn = '/some/path/a.tar.gz'
basename = os.path.basename(fn) # os independent
Out[] a.tar.gz
base = basename.split('.')[0]
Out[] a
ext = '.'.join(basename.split('.')[1:]) # <-- main part
# if you want a leading '.', and if no result `None`:
ext = '.' + ext if ext else None
Out[] .tar.gz
Vorteile:
- Funktioniert wie erwartet für alles, was ich mir vorstellen kann
- Keine Module
- Keine Regex
- Plattformübergreifend
- Leicht erweiterbar (z. B. keine führenden Punkte für die Erweiterung, nur letzter Teil der Erweiterung)
Als Funktion:
def get_extension(filename):
basename = os.path.basename(filename) # os independent
ext = '.'.join(basename.split('.')[1:])
return '.' + ext if ext else None
staytime
Punkte
135
DS_ShraShetty
Punkte
524
Extrahieren der Erweiterung aus dem Dateinamen in Python
Python os Modul splitext()
splitext() zerlegt den Dateipfad in ein Tupel mit zwei Werten - Root und Extension.
import os
# unpacking the tuple
file_name, file_extension = os.path.splitext("/Users/Username/abc.txt")
print(file_name)
print(file_extension)
Dateierweiterung mit Pathlib-Modul abrufen
Pathlib-Modul zur Ermittlung der Dateierweiterung
import pathlib
pathlib.Path("/Users/pankaj/abc.txt").suffix
#output:'.txt'