mimetypes
— Mappa filnamn till MIME-typer¶
Källkod: Lib/mimetypes.py
Modulen mimetypes
konverterar mellan ett filnamn eller en URL och den MIME-typ som associeras med filnamnstillägget. Konverteringar tillhandahålls från filnamn till MIME-typ och från MIME-typ till filnamnstillägg; kodningar stöds inte för den senare konverteringen.
Modulen innehåller en klass och ett antal bekvämlighetsfunktioner. Funktionerna är det normala gränssnittet till denna modul, men vissa applikationer kan vara intresserade av klassen också.
Funktionerna som beskrivs nedan utgör det primära gränssnittet för den här modulen. Om modulen inte har initialiserats kommer de att anropa init()
om de förlitar sig på den information som init()
skapar.
- mimetypes.guess_type(url, strict=True)¶
Gissa typen av en fil baserat på filnamn, sökväg eller URL, som anges av url. URL kan vara en sträng eller ett path-like object.
Returvärdet är en tupel
(type, encoding)
där type ärNone
om typen inte kan gissas (saknat eller okänt suffix) eller en sträng av formen'type/subtype'
, användbar för en MIME content-type header.encoding är
None
för ingen kodning eller namnet på det program som används för att koda (t.ex. compress eller gzip). Kodningen är lämplig att använda som rubrik i Content-Encoding, inte som rubrik i Content-Transfer-Encoding. Mappningarna är tabelldrivna. Kodningssuffix är skiftlägeskänsliga; typsuffix prövas först skiftlägeskänsligt, sedan skiftlägesokänsligt.Det valfria strict-argumentet är en flagga som anger om listan över kända MIME-typer är begränsad till endast de officiella typerna registrerade hos IANA”. Den här modulens beteende beror dock också på det underliggande operativsystemet. Endast filtyper som känns igen av operativsystemet eller som uttryckligen registrerats i Pythons interna databas kan identifieras. När strict är
True
(standard), stöds endast IANA-typerna; när strict ärFalse
, identifieras även några ytterligare MIME-typer som inte är standard men som används ofta.Ändrad i version 3.8: Lagt till stöd för att url är ett path-like object.
Föråldrad sedan version 3.13: Att skicka en filsökväg istället för URL är soft deprecated. Använd
guess_file_type()
för detta.
- mimetypes.guess_file_type(path, *, strict=True)¶
Gissar typen av en fil baserat på dess sökväg, som anges av path. Liknar funktionen
guess_type()
, men accepterar en sökväg istället för URL. Sökvägen kan vara en sträng, ett bytes-objekt eller ett path-like object.Tillagd i version 3.13.
- mimetypes.guess_all_extensions(type, strict=True)¶
Gissar filnamnstillägget för en fil baserat på dess MIME-typ, som anges av type. Returvärdet är en lista med strängar som anger alla möjliga filnamnstillägg, inklusive den inledande punkten (
'.'
). Det är inte säkert att filtilläggen har associerats med någon särskild dataström, men de skulle mappas till MIME-typen type avguess_type()
ochguess_file_type()
.Det valfria argumentet strict har samma betydelse som för funktionen
guess_type()
.
- mimetypes.guess_extension(type, strict=True)¶
Gissar filnamnstillägget för en fil baserat på dess MIME-typ, som anges av type. Returvärdet är en sträng som ger ett filnamnstillägg, inklusive den inledande punkten (
'.'
). Det är inte säkert att filnamnstillägget har associerats med någon särskild dataström, men det skulle mappas till MIME-typen type avguess_type()
ochguess_file_type()
. Om ingen förlängning kan gissas för type returnerasNone
.Det valfria argumentet strict har samma betydelse som för funktionen
guess_type()
.
Vissa ytterligare funktioner och dataobjekt finns tillgängliga för att styra modulens beteende.
- mimetypes.init(files=None)¶
Initialiserar de interna datastrukturerna. Om files anges måste det vara en sekvens av filnamn som ska användas för att utöka standardtypkartan. Om den utelämnas hämtas de filnamn som ska användas från
knownfiles
; i Windows läses de aktuella registerinställningarna in. Varje fil som namnges i files ellerknownfiles
har företräde framför de filer som namnges före den. Det är tillåtet att anropainit()
upprepade gånger.Om du anger en tom lista för files förhindras att systemets standardvärden tillämpas: endast de välkända värdena från en inbyggd lista kommer att finnas med.
Om files är
None
återuppbyggs den interna datastrukturen helt och hållet till sitt ursprungliga standardvärde. Detta är en stabil operation och kommer att ge samma resultat när den anropas flera gånger.Ändrad i version 3.2: Tidigare ignorerades Windows registerinställningar.
- mimetypes.read_mime_types(filename)¶
Läser in typkartan som anges i filen filnamn, om den finns. Typkartan returneras som en ordbok som mappar filnamnstillägg, inklusive den inledande punkten (
'.'
), till strängar av formen'type/subtype'
. Om filen filnamn inte finns eller inte kan läsas returnerasNone
.
- mimetypes.add_type(type, ext, strict=True)¶
Lägg till en mappning från MIME-typen type till tillägget ext. Om tillägget redan är känt kommer den nya typen att ersätta den gamla. Om typen redan är känd kommer tillägget att läggas till i listan över kända tillägg.
När strict är
True
(standard), kommer mappningen att läggas till de officiella MIME-typerna, annars till de icke-standardiserade.
- mimetypes.inited¶
Flagga som anger om de globala datastrukturerna har initialiserats eller inte. Denna sätts till
True
avinit()
.
- mimetypes.knownfiles¶
Lista över filnamn för typkartor som vanligtvis installeras. Dessa filer har vanligtvis namnet
mime.types
och installeras på olika platser av olika paket.
- mimetypes.suffix_map¶
Ordbok som mappar suffix till suffix. Detta används för att göra det möjligt att känna igen kodade filer där kodningen och typen anges med samma tillägg. Exempelvis mappas tillägget
.tgz
till.tar.gz
så att kodning och typ kan identifieras separat.
- mimetypes.encodings_map¶
Ordbok som mappar filnamnstillägg till kodningstyper.
- mimetypes.types_map¶
Ordbok som mappar filnamnstillägg till MIME-typer.
- mimetypes.common_types¶
Ordbok som mappar filnamnstillägg till icke-standardiserade men vanligt förekommande MIME-typer.
Ett exempel på användning av modulen:
>>> 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-objekt¶
Klassen MimeTypes
kan vara användbar för applikationer som vill ha mer än en MIME-typdatabas; den tillhandahåller ett gränssnitt som liknar det i modulen mimetypes
.
- class mimetypes.MimeTypes(filenames=(), strict=True)¶
Denna klass representerar en MIME-types-databas. Som standard ger den tillgång till samma databas som resten av den här modulen. Den ursprungliga databasen är en kopia av den som tillhandahålls av modulen, och kan utökas genom att ladda ytterligare
mime.types
-filer i databasen med hjälp av metodernaread()
ellerreadfp()
. Mappningsordlistorna kan också rensas innan ytterligare data laddas om standarddata inte önskas.Den valfria parametern filnamn kan användas för att ladda ytterligare filer ”ovanpå” standarddatabasen.
- suffix_map¶
Ordbok som mappar suffix till suffix. Detta används för att göra det möjligt att känna igen kodade filer där kodningen och typen anges med samma tillägg. Exempelvis mappas tillägget
.tgz
till.tar.gz
så att kodning och typ kan identifieras separat. Detta är ursprungligen en kopia av den globalasuffix_map
som definieras i modulen.
- encodings_map¶
Ordbok som mappar filnamnstillägg till kodningstyper. Detta är ursprungligen en kopia av den globala
encodings_map
som definieras i modulen.
- types_map¶
Tupel som innehåller två ordböcker som mappar filnamnstillägg till MIME-typer: den första ordboken är för icke-standardtyper och den andra är för standardtyper. De initialiseras av
common_types
ochtypes_map
.
- types_map_inv¶
Tupel som innehåller två ordböcker som mappar MIME-typer till en lista med filnamnstillägg: den första ordboken är för icke-standardtyper och den andra är för standardtyper. De initialiseras av
common_types
ochtypes_map
.
- guess_extension(type, strict=True)¶
Liknar funktionen
guess_extension()
, men använder de tabeller som lagras som en del av objektet.
- guess_type(url, strict=True)¶
Liknar funktionen
guess_type()
, men använder de tabeller som lagras som en del av objektet.
- guess_file_type(path, *, strict=True)¶
Liknar funktionen
guess_file_type()
, men använder de tabeller som lagras som en del av objektet.Tillagd i version 3.13.
- guess_all_extensions(type, strict=True)¶
Liknar funktionen
guess_all_extensions()
, men använder de tabeller som lagras som en del av objektet.
- read(filename, strict=True)¶
Läser in MIME-information från en fil med namnet filnamn. Detta använder
readfp()
för att analysera filen.Om strict är
True
, kommer informationen att läggas till i listan över standardtyper, annars i listan över icke-standardtyper.
- readfp(fp, strict=True)¶
Läser in information om MIME-typer från en öppen fil fp. Filen måste ha samma format som standardfilerna
mime.types
.Om strict är
True
, kommer informationen att läggas till i listan över standardtyper, annars i listan över icke-standardtyper.
- read_windows_registry(strict=True)¶
Ladda information om MIME-typ från Windows-registret.
Tillgänglighet: Windows.
Om strict är
True
, kommer informationen att läggas till i listan över standardtyper, annars i listan över icke-standardtyper.Tillagd i version 3.2.
- add_type(type, ext, strict=True)¶
Lägg till en mappning från MIME-typen type till tillägget ext. Giltiga tillägg börjar med ett ”.” eller är tomma. Om tillägget redan är känt kommer den nya typen att ersätta den gamla. Om typen redan är känd kommer tillägget att läggas till i listan över kända tillägg.
När strict är
True
(standard), kommer mappningen att läggas till de officiella MIME-typerna, annars till de icke-standardiserade.Deprecated since version 3.14, will be removed in version 3.16: Ogiltiga, okommenterade tillägg ger upphov till ett
ValueError
i Python 3.16.
Användning av kommandoraden¶
Modulen mimetypes
kan köras som ett skript från kommandoraden.
python -m mimetypes [-h] [-e] [-l] typ [typ ...]
Följande alternativ accepteras:
Som standard konverterar skriptet MIME-typer till filtillägg. Men om --extension
anges konverterar det filtillägg till MIME-typer.
För varje type
skriver skriptet en rad i standardutdataflödet. Om en okänd typ inträffar skriver skriptet ett felmeddelande till standardfelströmmen och avslutas med returkoden 1
.
Exempel på kommandorad¶
Här följer några exempel på typisk användning av kommandoradsgränssnittet mimetypes
:
$ # 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