mimetypes — 파일 이름을 MIME 타입으로 매핑
mimetypes — 파일 이름을 MIME 타입으로 매핑
mimetypes 모듈은 파일 이름이나 URL과 파일 이름 확장자에 연관된 MIME 타입 사이를 변환해요. 파일 이름에서 MIME 타입으로, MIME 타입에서 파일 이름 확장자로의 변환이 제공되며, 후자의 변환에는 인코딩이 지원되지 않아요.
이 모듈은 하나의 클래스와 여러 편의 함수를 제공해요. 함수가 이 모듈의 정상적인 인터페이스지만, 일부 애플리케이션은 클래스에도 관심이 있을 수 있어요. 아래에 설명된 함수는 이 모듈의 주요 인터페이스를 제공하며, 모듈이 초기화되지 않은 상태에서 init()이 설정한 정보에 의존하는 함수는 init()을 호출해요.
본문
함수
mimetypes.guess_type(url, strict=True) — url로 주어진 파일 이름, 경로 또는 URL을 기반으로 파일의 타입을 추측해요. URL은 문자열 또는 path-like 객체일 수 있어요. 반환값은 튜플 (type, encoding)이며, 타입을 추측할 수 없으면(누락되거나 알 수 없는 접미사) type은 None이거나 MIME content-type 헤더에 사용할 수 있는 'type/subtype' 형태의 문자열이에요. encoding은 인코딩이 없으면 None이거나 인코딩에 사용된 프로그램의 이름(예: compress 또는 gzip)이에요. 인코딩 접미사는 대소문자를 구분하고, 타입 접미사는 먼저 대소문자를 구분해 시도한 다음 대소문자를 구분하지 않고 시도해요.
선택적 strict 인자는 알려진 MIME 타입 목록이 IANA에 등록된 공식 타입으로만 제한되는지 지정하는 플래그예요. strict가 True(기본값)이면 IANA 타입만 지원되고, False이면 비표준이지만 흔히 사용되는 일부 MIME 타입도 인식돼요.
mimetypes.guess_file_type(path, *, strict=True) — path로 주어진 경로를 기반으로 파일의 타입을 추측해요. guess_type()과 비슷하지만 URL 대신 경로를 받아요. 경로는 문자열, bytes 객체 또는 path-like 객체일 수 있어요. 버전 3.13에서 추가됨.
mimetypes.guess_all_extensions(type, strict=True) — type으로 주어진 MIME 타입을 기반으로 파일의 확장자를 추측해요. 반환값은 선행 점('.')을 포함한 모든 가능한 파일 이름 확장자를 주는 문자열 리스트예요.
mimetypes.guess_extension(type, strict=True) — type으로 주어진 MIME 타입을 기반으로 파일의 확장자를 추측해요. 반환값은 선행 점('.')을 포함한 파일 이름 확장자를 주는 문자열이에요. type에 대해 확장자를 추측할 수 없으면 None이 반환돼요.
mimetypes.init(files=None) — 내부 데이터 구조를 초기화해요. files는 기본 타입 맵을 보강하는 데 사용해야 할 파일 이름 시퀀스예요. 생략하면 사용할 파일 이름은 knownfiles에서 가져오고, Windows에서는 현재 레지스트리 설정이 로드돼요. init()을 반복 호출하는 것은 허용돼요. files에 빈 리스트를 지정하면 시스템 기본값이 적용되지 않고, 내장 리스트의 잘 알려진 값만 존재하게 돼요.
mimetypes.read_mime_types(file) — file로 이름이 지정된 파일에 주어진 타입 맵을 로드해요(존재하는 경우). 타입 맵은 선행 점('.')을 포함한 파일 확장자를 'type/subtype' 형태의 문자열에 매핑하는 딕셔너리로 반환돼요. 파일이 존재하지 않거나 읽을 수 없으면 None이 반환돼요.
mimetypes.add_type(type, ext, strict=True) — MIME 타입 type에서 확장자 ext로의 매핑을 추가해요. 확장자가 이미 알려져 있으면 새 타입이 이전 타입을 대체해요. strict가 True(기본값)이면 매핑이 공식 MIME 타입에 추가되고, 그렇지 않으면 비표준 타입에 추가돼요.
mimetypes.inited — 전역 데이터 구조가 초기화되었는지 여부를 나타내는 플래그예요. init()이 True로 설정해요.
mimetypes.knownfiles — 흔히 설치되는 타입 맵 파일 이름의 리스트예요. 보통 mime.types라는 이름이고 다른 패키지가 다른 위치에 설치해요.
mimetypes.suffix_map — 접미사를 접미사에 매핑하는 딕셔너리예요. 인코딩과 타입이 같은 확장자로 표시되는 인코딩된 파일을 인식할 수 있게 해줘요. 예를 들어 .tgz 확장자는 .tar.gz로 매핑되어 인코딩과 타입을 별도로 인식할 수 있어요.
mimetypes.encodings_map — 파일 이름 확장자를 인코딩 타입에 매핑하는 딕셔너리예요.
mimetypes.types_map — 파일 이름 확장자를 MIME 타입에 매핑하는 딕셔너리예요.
mimetypes.common_types — 파일 이름 확장자를 비표준이지만 흔히 발견되는 MIME 타입에 매핑하는 딕셔너리예요.
사용 예시:
>>> import mimetypes
>>> mimetypes.init()
>>> mimetypes.suffix_map['.tgz']
'.tar.gz'
>>> mimetypes.encodings_map['.gz']
'gzip'
>>> mimetypes.types_map['.tgz']
'application/x-tar-gz'
MimeTypes 객체
class mimetypes.MimeTypes(filenames=(), strict=True) — MIME 타입 데이터베이스를 나타내는 클래스예요. 기본적으로 이 모듈의 나머지 부분과 같은 데이터베이스에 대한 접근을 제공해요. read()나 readfp() 메서드로 추가 mime.types 스타일 파일을 데이터베이스에 로드해 확장할 수 있어요. suffix_map, encodings_map, types_map, types_map_inv 속성과 guess_extension(), guess_type(), guess_file_type(), guess_all_extensions(), read(), readfp(), read_windows_registry()(Windows에서만), add_type() 메서드를 제공해요.
명령줄 사용
mimetypes 모듈은 명령줄에서 스크립트로 실행할 수 있어요:
python -m mimetypes [-h] [-e] [-l] type [type ...]
-h, --help— 도움말 메시지를 표시하고 종료.-e, --extension— 타입 대신 확장자를 추측.-l, --lenient— 흔하지만 비표준인 일부 타입을 추가로 검색.
기본적으로 스크립트는 MIME 타입을 파일 확장자로 변환해요. --extension이 지정되면 파일 확장자를 MIME 타입으로 변환해요.
$ python -m mimetypes filename.png
type: image/png encoding: None
$ python -m mimetypes filename.tar.gz
type: application/x-tar encoding: gzip
$ python -m mimetypes --extension text/javascript
.js