Frage Extrahieren Erweiterung von Dateinamen in Python


Gibt es eine Funktion, um die Erweiterung aus einem Dateinamen zu extrahieren?


885
2018-02-12 14:11


Ursprung


Antworten:


Ja. Benutzen os.path.splitext(sehen Python 2.X Dokumentation oder Python 3.X-Dokumentation):

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

1408
2018-02-12 14:12



import os.path
extension = os.path.splitext(filename)[1]

308
2018-02-12 14:15



Neu in Version 3.4.

import pathlib

print(pathlib.Path('yourPathGoesHere').suffix)

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

Wenn Sie alle Suffixe benötigen (zB wenn Sie eine haben .tar.gz), .suffixes wird eine Liste von ihnen zurückgeben!


93
2018-02-03 21:41



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

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


77
2017-08-26 09:37



Eine Option kann sein, von Punkt zu trennen:

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

Kein Fehler, wenn die Datei keine Erweiterung hat:

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

Aber du musst vorsichtig sein:

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

54
2018-04-09 18:48



es lohnt sich, ein niedrigeres darin zu addieren, also wundern Sie sich nicht, warum die JPGs nicht in Ihrer Liste auftauchen.

os.path.splitext(filename)[1][1:].strip().lower()

26
2017-12-28 07:25



Jede der obigen Lösungen funktioniert, aber unter Linux habe ich festgestellt, dass am Ende der Erweiterungszeichenfolge ein Zeilenumbruch vorhanden ist, der verhindert, dass Treffer erfolgreich sind. Ergänzen Sie die strip() Methode bis zum Ende. Beispielsweise:

import os.path
extension = os.path.splitext(filename)[1][1:].strip() 

10
2017-10-10 22:48