Ich arbeite an einem bestimmten Programm, bei dem ich je nach Dateierweiterung verschiedene Aufgaben ausführen muss. Könnte ich das einfach benutzen?
if m == *.mp3
...
elif m == *.flac
...
python
file-extension
wkoomson
quelle
quelle
Antworten:
Angenommen, es
m
handelt sich um eine Zeichenfolge, können Sie Folgendes verwendenendswith
:Um die Groß- und Kleinschreibung nicht zu berücksichtigen und eine potenziell große else-if-Kette zu eliminieren:
quelle
.split('.')[-1]
? Oder ist die Partitionierung wirklich hocheffizient?os.path
bietet viele Funktionen zum Bearbeiten von Pfaden / Dateinamen. ( docs )os.path.splitext
nimmt einen Pfad und teilt die Dateierweiterung vom Ende auf.Gibt:
quelle
/.mp3
nicht als MP3-Datei betrachtet. Dies ist jedoch die Art und Weise, wie ein führender Raum behandelt werden sollte. ZB.gitignore
ist kein DateiformatVerwendung
pathlib
ab Python3.4.quelle
Schauen Sie sich das Modul fnmatch an. Das wird tun, was Sie versuchen zu tun.
quelle
Ein einfacher Weg könnte sein:
os.path.splitext(file)
gibt ein Tupel mit zwei Werten zurück (der Dateiname ohne Erweiterung + nur die Erweiterung). Der zweite Index ([1]) gibt Ihnen daher nur die Erweiterung. Das Coole ist, dass Sie auf diese Weise bei Bedarf auch ganz einfach auf den Dateinamen zugreifen können!quelle
oder vielleicht:
quelle
Ein alter Thread, kann aber zukünftigen Lesern helfen ...
Ich würde die Verwendung von .lower () für Dateinamen vermeiden , wenn es keinen anderen Grund gibt, als Ihren Code plattformunabhängiger zu machen. (Linux ist Fall Empfindlicher, .unterhalb () auf einem Dateinamen wird sicherlich korrupt Ihre Logik schließlich ... oder noch schlimmer, eine wichtige Datei!)
Warum nicht re verwenden ? (Um noch robuster zu sein, sollten Sie den Magic File Header jeder Datei überprüfen ... Wie kann man den Dateityp ohne Erweiterungen in Python überprüfen? )
Ausgabe:
quelle
quelle
quelle
.
s enthalten, zum Beispielsome.test.file.mp3
quelle
quelle