1809 Stimmen

Extrahieren der Erweiterung aus dem Dateinamen in Python

Gibt es eine Funktion zum Extrahieren der Erweiterung aus einem Dateinamen?

2599voto

nosklo Punkte 204121

Ja. Verwenden Sie . os.path.splitext (siehe Python 2.X Dokumentation o Python 3.X Dokumentation ):

>>> import os
>>> filename, file_extension = os.path.splitext('/path/to/somefile.ext')
>>> filename
'/path/to/somefile'
>>> file_extension
'.ext'

Im Gegensatz zu den meisten manuellen String-Splitting-Versuchen, os.path.splitext wird korrekt behandelt /a/b.c/d als "ohne Erweiterung" statt "mit Erweiterung .c/d und es wird behandelt .bashrc als "ohne Erweiterung" statt "mit Erweiterung .bashrc :

>>> os.path.splitext('/a/b.c/d')
('/a/b.c/d', '')
>>> os.path.splitext('.bashrc')
('.bashrc', '')

669voto

jeromej Punkte 8455

Neu in Version 3.4.

import pathlib

print(pathlib.Path('yourPath.example').suffix) # '.example'

Ich bin überrascht, dass noch niemand erwähnt hat pathlib noch nicht, pathlib ist großartig!

Wenn Sie alle Suffixe benötigen (z. B. wenn Sie eine .tar.gz ), .suffixes gibt eine Liste von ihnen zurück!

493voto

Brian Neal Punkte 30564
import os.path
extension = os.path.splitext(filename)[1]

144voto

wonzbak Punkte 7006
import os.path
extension = os.path.splitext(filename)[1][1:]

Um nur den Text der Erweiterung zu erhalten, ohne den Punkt.

112voto

Murat Çorlu Punkte 7594

Für einfache Anwendungsfälle kann eine Option die Aufteilung von dot sein:

>>> filename = "example.jpeg"
>>> filename.split(".")[-1]
'jpeg'

Kein Fehler, wenn die Datei keine Erweiterung hat:

>>> "filename".split(".")[-1]
'filename'

Aber Sie müssen vorsichtig sein:

>>> "png".split(".")[-1]
'png'    # But file doesn't have an extension

Es funktioniert auch nicht mit versteckten Dateien in Unix-Systemen:

>>> ".bashrc".split(".")[-1]
'bashrc'    # But this is not an extension

Für den allgemeinen Gebrauch bevorzugen Sie os.path.splitext

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