미디어 타입(media type), MIME 타입(MIME type)

1. 라이브러리 설치

실행환경 : windows 10

pip install libmagic
pip install python-magic-bin

실행환경 : linux

pip install libmagic
pip install python-magic
  • libmagic : 파일타입을 MIME 타입으로 확인해주는 라이브러리
  • python-magic-bin : 윈도우용 magic 라이브러리
  • python-magic : 리눅스용 magic 라이브러리

2. 예제 코드

import magic

r1 = magic.from_file("test1.txt")
r2 = magic.from_file("test1.txt", mime=True)
print(f"filetype = {r1}, \nmime = {r2}")   
# filetype = UTF-8 Unicode text, with CRLF line terminators,
# mime = text/plain

file_data = open('test1.txt', 'r').read(1024)
r3 = magic.from_buffer(file_data)
r4 = magic.from_buffer(file_data, mime=True)
print(f"filetype = {r3}, \nmime = {r4}")

UnicodeDecodeError 에러 발생시

UnicodeDecodeError: 'cp949' codec can't decode byte 0xd3 in position 23: illegal multibyte sequence

file open encoding 지정하여 디코딩 가능하도록 코드 수정

file_data = open('test1.txt', 'r', encoding='UTF-8').read(1024)
r3 = magic.from_buffer(file_data)
r4 = magic.from_buffer(file_data, mime=True)
print(f"filetype = {r3}, \nmime = {r4}")
# filetype = data,
# mime = application/octet-stream