[python] 파이썬에서 파일의 MIME 유형을 찾는 방법은 무엇입니까?

예를 들어 BLOB와 같은 곳에 여러 파일을 저장하려고한다고 가정 해 봅시다. 웹 페이지를 통해 이러한 파일을 정리하고 클라이언트가 올바른 응용 프로그램 / 뷰어를 자동으로 열도록한다고 가정하겠습니다.

가정 : 브라우저는 HTTP 응답에서 mime-type (content-type?) 헤더가 사용할 애플리케이션 / 뷰어를 파악합니다.

해당 가정을 기반으로 파일의 바이트 외에도 MIME 유형을 저장하려고합니다.

파일의 MIME 유형을 어떻게 찾을 수 있습니까? 저는 현재 Mac에 있지만 Windows에서도 작동합니다.

파일을 웹 페이지에 게시 할 때 브라우저가이 정보를 추가합니까?

이 정보를 찾기위한 깔끔한 파이썬 라이브러리가 있습니까? WebService 또는 다운로드 가능한 데이터베이스입니까?



답변

toivotuo가 제안한 python-magic 방법은 구식입니다. Python-magic의 현재 트렁크는 Github에 있으며 MIME 유형을 찾는 readme를 기반으로 다음과 같이 수행됩니다.

# For MIME types
import magic
mime = magic.Magic(mime=True)
mime.from_file("testdata/test.pdf") # 'application/pdf'


답변

표준 라이브러리 의 mimetypes 모듈 은 파일 확장자에서 MIME 유형을 결정 / 추측합니다.

사용자가 파일을 업로드하는 경우 HTTP 게시물에는 데이터와 함께 파일의 MIME 유형이 포함됩니다. 예를 들어 Django는이 데이터를 UploadedFile 객체 의 속성으로 사용할 수있게 합니다.


답변

mimetypes 라이브러리를 사용하는 것보다 더 안정적인 방법은 python-magic 패키지를 사용하는 것입니다.

import magic
m = magic.open(magic.MAGIC_MIME)
m.load()
m.file("/tmp/document.pdf")

이것은 file (1)을 사용하는 것과 같습니다.

장고에서는 MIME 형식이 UploadedFile.content_type과 일치하는지 확인할 수도 있습니다.


답변

이것은 매우 쉬운 것 같습니다

>>> from mimetypes import MimeTypes
>>> import urllib
>>> mime = MimeTypes()
>>> url = urllib.pathname2url('Upload.xml')
>>> mime_type = mime.guess_type(url)
>>> print mime_type
('application/xml', None)

Old Post를 참조하십시오

업데이트 -@Garrets 의견에 따라 python 3에서는 더 간단합니다.

import mimetypes
print(mimetypes.guess_type("sample.html"))


답변

libmagic을 감싸는 3 개의 서로 다른 라이브러리가 있습니다.

그중 2 개는 pypi에서 사용할 수 있습니다 (pip 설치가 작동합니다).

  • filemagic
  • 파이썬 매직

그리고 python-magic과 유사한 또 다른 파일은 최신 libmagic 소스에서 직접 사용할 수 있으며 Linux 배포판에있을 수 있습니다.

데비안에서 python-magic 패키지는 이것에 관한 것이며 toivotuo로 사용되며 Simon Zimmermann이 말한대로 사용되지 않습니다 (IMHO).

libmagic의 원래 작성자가 다른 테이크를 취하는 것 같습니다.

너무 나쁜 것은 pypi에서 직접 사용할 수 없습니다.


답변

파이썬 2.6에서 :

mime = subprocess.Popen("/usr/bin/file --mime PATH", shell=True, \
    stdout=subprocess.PIPE).communicate()[0]


답변

2017 년 업데이트

github에 갈 필요가 없습니다 .PyPi에 다른 이름으로 있습니다.

pip3 install --user python-magic
# or:
sudo apt install python3-magic  # Ubuntu distro package

코드를 단순화 할 수도 있습니다.

>>> import magic

>>> magic.from_file('/tmp/img_3304.jpg', mime=True)
'image/jpeg'