mimetypes — Dateinamen zu MIME-Typen zuordnen

Quellcode: Lib/mimetypes.py


Das Modul mimetypes konvertiert zwischen einem Dateinamen oder einer URL und dem MIME-Typ, der der Dateiendung zugeordnet ist. Es werden Konvertierungen vom Dateinamen zum MIME-Typ und vom MIME-Typ zur Dateiendung bereitgestellt; für letztere Konvertierung werden keine Kodierungen unterstützt.

Das Modul bietet eine Klasse und eine Reihe von Hilfsfunktionen. Die Funktionen sind die normale Schnittstelle zu diesem Modul, aber einige Anwendungen sind möglicherweise auch an der Klasse interessiert.

Die unten beschriebenen Funktionen bieten die primäre Schnittstelle für dieses Modul. Wenn das Modul noch nicht initialisiert wurde, rufen sie init() auf, wenn sie auf die von init() eingerichteten Informationen angewiesen sind.

mimetypes.guess_type(url, strict=True)

Schätzt den Typ einer Datei basierend auf ihrem Dateinamen, Pfad oder URL, der von url angegeben wird. URL kann ein String oder ein pfadähnliches Objekt sein.

Der Rückgabewert ist ein Tupel (type, encoding), wobei type None ist, wenn der Typ nicht geschätzt werden kann (fehlendes oder unbekanntes Suffix), oder ein String der Form 'type/subtype', der für einen MIME-content-type-Header verwendbar ist.

encoding ist None für keine Kodierung oder der Name des Programms, das zur Kodierung verwendet wurde (z.B. compress oder gzip). Die Kodierung ist für die Verwendung als Content-Encoding-Header geeignet, **nicht** als Content-Transfer-Encoding-Header. Die Zuordnungen sind tabellengesteuert. Kodierungssuffixe sind case-sensitiv; Typensuffixe werden zuerst case-sensitiv, dann case-insensitiv versucht.

Das optionale Argument strict ist ein Flag, das angibt, ob die Liste der bekannten MIME-Typen auf nur die offiziellen Typen bei der IANA registrierten beschränkt ist. Das Verhalten dieses Moduls hängt jedoch auch vom zugrunde liegenden Betriebssystem ab. Nur Dateitypen, die vom Betriebssystem erkannt oder explizit in der internen Datenbank von Python registriert sind, können identifiziert werden. Wenn strict True (Standard) ist, werden nur die IANA-Typen unterstützt; wenn strict False ist, werden auch einige zusätzliche nicht-standardmäßige, aber gebräuchliche MIME-Typen erkannt.

Geändert in Version 3.8: Unterstützung für url als pfadähnliches Objekt hinzugefügt.

Seit Version 3.13 veraltet: Die Übergabe eines Dateipfads anstelle einer URL ist sanft veraltet. Verwenden Sie stattdessen guess_file_type().

mimetypes.guess_file_type(path, strict=True)

Schätzt den Typ einer Datei basierend auf ihrem Pfad, der von path angegeben wird. Ähnlich wie die Funktion guess_type(), akzeptiert jedoch einen Pfad anstelle einer URL. Pfad kann ein String, ein Byte-Objekt oder ein pfadähnliches Objekt sein.

Hinzugefügt in Version 3.13.

mimetypes.guess_all_extensions(type, strict=True)

Schätzt die Erweiterungen für eine Datei basierend auf ihrem MIME-Typ, der von type angegeben wird. Der Rückgabewert ist eine Liste von Strings, die alle möglichen Dateiendungen, einschließlich des führenden Punkts ('.'), angeben. Die Erweiterungen sind nicht garantiert mit einem bestimmten Datenstrom assoziiert, würden aber von guess_type() und guess_file_type() dem MIME-Typ type zugeordnet.

Das optionale Argument strict hat die gleiche Bedeutung wie bei der Funktion guess_type().

mimetypes.guess_extension(type, strict=True)

Schätzt die Erweiterung für eine Datei basierend auf ihrem MIME-Typ, der von type angegeben wird. Der Rückgabewert ist ein String, der eine Dateiendung, einschließlich des führenden Punkts ('.'), angibt. Die Erweiterung ist nicht garantiert mit einem bestimmten Datenstrom assoziiert, würde aber von guess_type() und guess_file_type() dem MIME-Typ type zugeordnet. Wenn keine Erweiterung für type geschätzt werden kann, wird None zurückgegeben.

Das optionale Argument strict hat die gleiche Bedeutung wie bei der Funktion guess_type().

Einige zusätzliche Funktionen und Datenobjekte stehen zur Steuerung des Verhaltens des Moduls zur Verfügung.

mimetypes.init(files=None)

Initialisiert die internen Datenstrukturen. Wenn angegeben, muss files eine Sequenz von Dateinamen sein, die zur Erweiterung der Standard-Typzuordnung verwendet werden sollen. Wenn weggelassen, werden die zu verwendenden Dateinamen aus knownfiles entnommen; unter Windows werden die aktuellen Registrierungseinstellungen geladen. Jede in files oder knownfiles genannte Datei hat Vorrang vor den zuvor genannten. Wiederholtes Aufrufen von init() ist erlaubt.

Die Angabe einer leeren Liste für files verhindert, dass die Systemstandards angewendet werden: Nur die bekannten Werte aus einer integrierten Liste sind vorhanden.

Wenn files None ist, wird die interne Datenstruktur vollständig auf ihren anfänglichen Standardwert zurückgesetzt. Dies ist eine stabile Operation und liefert bei mehrmaligem Aufruf die gleichen Ergebnisse.

Geändert in Version 3.2: Zuvor wurden Windows-Registrierungseinstellungen ignoriert.

mimetypes.read_mime_types(filename)

Lädt die in der Datei filename angegebene Typzuordnung, falls sie existiert. Die Typzuordnung wird als Wörterbuch zurückgegeben, das Dateiendungen, einschließlich des führenden Punkts ('.'), auf Strings der Form 'type/subtype' abbildet. Wenn die Datei filename nicht existiert oder nicht gelesen werden kann, wird None zurückgegeben.

mimetypes.add_type(type, ext, strict=True)

Fügt eine Zuordnung vom MIME-Typ type zur Erweiterung ext hinzu. Wenn die Erweiterung bereits bekannt ist, ersetzt der neue Typ den alten. Wenn der Typ bereits bekannt ist, wird die Erweiterung zur Liste der bekannten Erweiterungen hinzugefügt.

Wenn strict True (Standard) ist, wird die Zuordnung zu den offiziellen MIME-Typen hinzugefügt, andernfalls zu den nicht-standardmäßigen.

mimetypes.inited

Flagge, die angibt, ob die globalen Datenstrukturen initialisiert wurden oder nicht. Diese wird von init() auf True gesetzt.

mimetypes.knownfiles

Liste von Dateinamen für Typzuordnungen, die üblicherweise installiert sind. Diese Dateien heißen typischerweise mime.types und werden von verschiedenen Paketen an verschiedenen Orten installiert.

mimetypes.suffix_map

Wörterbuch, das Suffixe auf Suffixe abbildet. Dies wird verwendet, um die Erkennung von kodierten Dateien zu ermöglichen, bei denen die Kodierung und der Typ durch dieselbe Erweiterung angegeben werden. Zum Beispiel wird die Erweiterung .tgz auf .tar.gz abgebildet, um die Kodierung und den Typ getrennt erkennen zu lassen.

mimetypes.encodings_map

Wörterbuch, das Dateiendungen auf Kodierungstypen abbildet.

mimetypes.types_map

Wörterbuch, das Dateiendungen auf MIME-Typen abbildet.

mimetypes.common_types

Wörterbuch, das Dateiendungen auf nicht-standardmäßige, aber häufig vorkommende MIME-Typen abbildet.

Ein Anwendungsbeispiel für das Modul

>>> import mimetypes
>>> mimetypes.init()
>>> mimetypes.knownfiles
['/etc/mime.types', '/etc/httpd/mime.types', ... ]
>>> mimetypes.suffix_map['.tgz']
'.tar.gz'
>>> mimetypes.encodings_map['.gz']
'gzip'
>>> mimetypes.types_map['.tgz']
'application/x-tar-gz'

MimeTypes-Objekte

Die Klasse MimeTypes kann für Anwendungen nützlich sein, die mehr als eine MIME-Typ-Datenbank wünschen; sie bietet eine Schnittstelle, die der des Moduls mimetypes ähnlich ist.

class mimetypes.MimeTypes(filenames=(), strict=True)

Diese Klasse repräsentiert eine MIME-Typ-Datenbank. Standardmäßig bietet sie Zugriff auf dieselbe Datenbank wie der Rest dieses Moduls. Die anfängliche Datenbank ist eine Kopie derjenigen, die vom Modul bereitgestellt wird, und kann durch das Laden zusätzlicher Dateien im mime.types-Stil in die Datenbank mithilfe der Methoden read() oder readfp() erweitert werden. Die Zuordnungswörterbücher können auch vor dem Laden zusätzlicher Daten gelöscht werden, wenn die Standarddaten nicht gewünscht sind.

Der optionale Parameter filenames kann verwendet werden, um zusätzliche Dateien "über" die Standarddatenbank zu laden.

suffix_map

Wörterbuch, das Suffixe auf Suffixe abbildet. Dies wird verwendet, um die Erkennung von kodierten Dateien zu ermöglichen, bei denen die Kodierung und der Typ durch dieselbe Erweiterung angegeben werden. Zum Beispiel wird die Erweiterung .tgz auf .tar.gz abgebildet, um die Kodierung und den Typ getrennt erkennen zu lassen. Dies ist anfänglich eine Kopie der globalen suffix_map, die im Modul definiert ist.

encodings_map

Wörterbuch, das Dateiendungen auf Kodierungstypen abbildet. Dies ist anfänglich eine Kopie der globalen encodings_map, die im Modul definiert ist.

types_map

Tupel, das zwei Wörterbücher enthält, die Dateiendungen auf MIME-Typen abbilden: Das erste Wörterbuch ist für die nicht-standardmäßigen Typen und das zweite für die standardmäßigen Typen. Sie werden durch common_types und types_map initialisiert.

types_map_inv

Tupel, das zwei Wörterbücher enthält, die MIME-Typen auf eine Liste von Dateiendungen abbilden: Das erste Wörterbuch ist für die nicht-standardmäßigen Typen und das zweite für die standardmäßigen Typen. Sie werden durch common_types und types_map initialisiert.

guess_extension(type, strict=True)

Ähnlich wie die Funktion guess_extension(), verwendet die Tabellen, die als Teil des Objekts gespeichert sind.

guess_type(url, strict=True)

Ähnlich wie die Funktion guess_type(), verwendet die Tabellen, die als Teil des Objekts gespeichert sind.

guess_file_type(path, *, strict=True)

Ähnlich wie die Funktion guess_file_type(), verwendet die Tabellen, die als Teil des Objekts gespeichert sind.

Hinzugefügt in Version 3.13.

guess_all_extensions(type, strict=True)

Ähnlich wie die Funktion guess_all_extensions(), verwendet die Tabellen, die als Teil des Objekts gespeichert sind.

read(filename, strict=True)

Lädt MIME-Informationen aus einer Datei namens filename. Dies verwendet readfp() zum Parsen der Datei.

Wenn strict True ist, werden Informationen zur Liste der Standardtypen hinzugefügt, andernfalls zur Liste der nicht-standardmäßigen Typen.

readfp(fp, strict=True)

Lädt MIME-Typinformationen aus einer geöffneten Datei fp. Die Datei muss das Format der Standard-mime.types-Dateien haben.

Wenn strict True ist, werden Informationen zur Liste der Standardtypen hinzugefügt, andernfalls zur Liste der nicht-standardmäßigen Typen.

read_windows_registry(strict=True)

Lädt MIME-Typinformationen aus der Windows-Registrierung.

Verfügbarkeit: Windows.

Wenn strict True ist, werden Informationen zur Liste der Standardtypen hinzugefügt, andernfalls zur Liste der nicht-standardmäßigen Typen.

Hinzugefügt in Version 3.2.

add_type(type, ext, strict=True)

Fügt eine Zuordnung vom MIME-Typ type zur Erweiterung ext hinzu. Gültige Erweiterungen beginnen mit einem Punkt oder sind leer. Wenn die Erweiterung bereits bekannt ist, ersetzt der neue Typ den alten. Wenn der Typ bereits bekannt ist, wird die Erweiterung zur Liste der bekannten Erweiterungen hinzugefügt.

Wenn strict True (Standard) ist, wird die Zuordnung zu den offiziellen MIME-Typen hinzugefügt, andernfalls zu den nicht-standardmäßigen.

Seit Version 3.14 veraltet, wird in Version 3.16 entfernt: Ungültige, nicht punktierte Erweiterungen lösen in Python 3.16 einen ValueError aus.

Verwendung über die Kommandozeile

Das Modul mimetypes kann als Skript von der Kommandozeile ausgeführt werden.

python -m mimetypes [-h] [-e] [-l] type [type ...]

Die folgenden Optionen werden akzeptiert:

-h
--help

Zeigt die Hilfemeldung an und beendet das Programm.

-e
--extension

Erweiterung anstelle des Typs schätzen.

-l
--lenient

Zusätzlich nach einigen gebräuchlichen, aber nicht-standardmäßigen Typen suchen.

Standardmäßig konvertiert das Skript MIME-Typen in Dateiendungen. Wenn jedoch --extension angegeben ist, konvertiert es Dateiendungen in MIME-Typen.

Für jeden type-Eintrag schreibt das Skript eine Zeile in den Standardausgabestrom. Wenn ein unbekannter Typ auftritt, schreibt es eine Fehlermeldung in den Standardfehlerausgabestrom und beendet sich mit dem Rückgabecode 1.

Beispiel für die Kommandozeile

Hier sind einige Beispiele für die typische Verwendung der mimetypes-Kommandozeilenschnittstelle

$ # get a MIME type by a file name
$ python -m mimetypes filename.png
type: image/png encoding: None

$ # get a MIME type by a URL
$ python -m mimetypes https://example.com/filename.txt
type: text/plain encoding: None

$ # get a complex MIME type
$ python -m mimetypes filename.tar.gz
type: application/x-tar encoding: gzip

$ # get a MIME type for a rare file extension
$ python -m mimetypes filename.pict
error: unknown extension of filename.pict

$ # now look in the extended database built into Python
$ python -m mimetypes --lenient filename.pict
type: image/pict encoding: None

$ # get a file extension by a MIME type
$ python -m mimetypes --extension text/javascript
.js

$ # get a file extension by a rare MIME type
$ python -m mimetypes --extension text/xul
error: unknown type text/xul

$ # now look in the extended database again
$ python -m mimetypes --extension --lenient text/xul
.xul

$ # try to feed an unknown file extension
$ python -m mimetypes filename.sh filename.nc filename.xxx filename.txt
type: application/x-sh encoding: None
type: application/x-netcdf encoding: None
error: unknown extension of filename.xxx

$ # try to feed an unknown MIME type
$ python -m mimetypes --extension audio/aac audio/opus audio/future audio/x-wav
.aac
.opus
error: unknown type audio/future