পাইথনে পাইলে মাইম টাইপের ফাইলটি কীভাবে পাওয়া যায়?


194

ধরা যাক আপনি কোথাও কোথাও একগুচ্ছ ফাইল সংরক্ষণ করতে চান, উদাহরণস্বরূপ BLOB- এ। ধরা যাক আপনি ওয়েব ফাইলের মাধ্যমে এই ফাইলগুলি সরিয়ে দিতে চান এবং ক্লায়েন্টটি স্বয়ংক্রিয়ভাবে সঠিক অ্যাপ্লিকেশন / দর্শক খুলতে চান।

অনুমান: ব্রাউজারটি HTTP প্রতিক্রিয়াতে মাইম-টাইপ (সামগ্রী-প্রকার?) শিরোনাম দ্বারা কোন অ্যাপ্লিকেশন / ভিউয়ার ব্যবহার করবে তা নির্ধারণ করে।

এই অনুমানের ভিত্তিতে, ফাইলের বাইটগুলি ছাড়াও, আপনি মাইমে টাইপও সংরক্ষণ করতে চান।

আপনি কোনও ফাইলের মাইমে টাইমটি কীভাবে খুঁজে পাবেন? আমি বর্তমানে একটি ম্যাক এ আছি, তবে এটি উইন্ডোতেও কাজ করা উচিত।

ওয়েব পৃষ্ঠায় ফাইল পোস্ট করার সময় ব্রাউজার কি এই তথ্য যুক্ত করে?

এই তথ্যটি খুঁজে পাওয়ার জন্য কি কোনও ঝরঝরে অজগর গ্রন্থাগার রয়েছে? একটি ওয়েব সার্ভিস বা (আরও ভাল) ডাউনলোডযোগ্য ডাটাবেস?

উত্তর:


218

টাইভোটুও দ্বারা প্রস্তাবিত অজগর-যাদু পদ্ধতিটি পুরানো। পাইথন-ম্যাজিকের বর্তমান ট্রাঙ্কটি গিথুব-এ রয়েছে এবং সেখানকার রিডমি-এর উপর ভিত্তি করে, মাইমাইম-টাইপ সন্ধান করে এটি করা হয়।

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

17
মন্তব্যের জন্য ধন্যবাদ! অনুগ্রহ করে নোট করুন যে "উপরের" স্ট্যাকওভারফ্লোতে একটি কঠিন ধারণা, যেহেতু ক্রমগুলি ভোটের মাধ্যমে গ্রুপবদ্ধ করা হয় এবং গ্রুপগুলির মধ্যে এলোমেলোভাবে আদেশ দেওয়া হয়। আমি অনুমান করছি আপনি @ toivotuo এর উত্তরটি দেখুন।
ড্যারেন টমাস

1
হ্যাঁ, আমার এই উত্তরটি লেখার সময় মন্তব্য তৈরি করার মতো পর্যাপ্ত "পয়েন্ট" ছিল না। তবে আমার সম্ভবত এটি একটি মন্তব্য হিসাবে লেখা উচিত ছিল, যাতে @ টাইভোটুও তাঁর প্রশ্নটি সম্পাদনা করতে পারে।
সাইমন জিম্মারম্যান

1
rpm -qf /usr/lib/python2.7/site-packages/magic.py -i URL: darwinsys.com/file সংক্ষিপ্তসার: লিবমাজিক এপিআই এর জন্য পাইথন বাইন্ডিংস rpm -qf / usr / bin / file -i নাম: ফাইল ইউআরএল: darwinsys.com/file অজগর-যাদু darwinsys.com/file থেকে এবং যা লিনাক্স ফেডোরার সাথে আসে @ @ toivotuo এর মত কাজ করে। এবং আরও মূল স্রোত বলে মনে হচ্ছে।
সর্জিও

7
সাবধান যে পাইথন-ম্যাজিক নামে ডিবান / উবুন্টু প্যাকেজ একই নামের পাইপ প্যাকেজের চেয়ে আলাদা। উভয়ই import magicকিন্তু অসামঞ্জস্য সামগ্রী রয়েছে। আরও জানতে স্ট্যাকওভারফ্লো . com/a/16203777/3189 দেখুন।
হামিশ ডাউনার

1
টোভোটুওর জবাব নিয়ে আমি যেমন মন্তব্য করেছি, তা পুরানো নয়! আপনি অন্য একটি লাইব্রেরির কথা বলছেন। আপনি দয়া করে আপনার উত্তরে সেই বিবৃতিটি সরিয়ে বা প্রতিস্থাপন করতে পারেন? এটি বর্তমানে সেরা সমাধানটি খুঁজে পাওয়া সত্যিই কঠিন করে তুলেছে।
বোডো

86

Mimetypes মডিউল মান লাইব্রেরিতে নির্ধারণ / একটি ফাইল এক্সটেনশন থেকে MIME প্রকার অনুমান হবে।

ব্যবহারকারীরা যদি ফাইলগুলি আপলোড করেন তবে এইচটিটিপি পোস্টে ডেটার পাশাপাশি মাইম টাইপের ফাইলও থাকবে। উদাহরণস্বরূপ, জ্যাঙ্গো এই ডেটাটিকে আপলোড করা ফাইলের অ্যাট্রিবিউট হিসাবে উপলব্ধ করে ।


12
যদি প্রশ্নগুলিতে উল্লিখিত হিসাবে ফাইলগুলি বিএলওবিএসে সঞ্চিত থাকে তবে আপনি ফাইল এক্সটেনশন জানেন না।
যান্ত্রিক শামুক 6

55
মাইম প্রকার নির্ধারণের জন্য ফাইল এক্সটেনশনগুলি নির্ভরযোগ্য উপায় নয়।
Cerin

12
import mimetypes mimetypes.MimeTypes().guess_type(filename)[0]
জোনাথন

4
অজগর 3.6 এ এটি কাজ করে:mimetypes.guess_type(path_file_to_upload)[1]
জিনস্নো

3
@ সিসারিন ঠিক বলেছেন যে ফাইল এক্সটেনশনগুলি নির্ভরযোগ্য নয়, তবে আমি সবেমাত্র জানতে পেরেছি যে github.com/s3tools/s3cmd/issues/198python-magic দ্বারা নিশ্চিত হওয়া হিসাবে যথাযথতা (উপরের উত্তরে বলা হয়েছে) আরও কম হবে । সুতরাং, আমার কাছে আরও ভাল প্রার্থী মনে হচ্ছে। mimetypes
অগস্ট

46

মাইমটাইপস লাইব্রেরি ব্যবহারের চেয়ে আরও নির্ভরযোগ্য উপায় হ'ল পাইথন-ম্যাজিক প্যাকেজটি ব্যবহার করা।

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

এটি ফাইল (1) ব্যবহারের সমতুল্য হবে।

জ্যাঙ্গোতে এমএমআই টাইপটি আপলোডডফিল.কমেন্ট_টাইপের সাথে মেলে কিনা তা নিশ্চিত করতে পারে।


2
পাইথন-ম্যাজিকের আপডেট ব্যবহারের জন্য সাইমন জিমারম্যানের পোস্টটি দেখুন
ড্যারেন টমাস

@ ড্যারেন থমাস: মাম্মাদোরীর উত্তরে যেমন উল্লেখ করা হয়েছে, এই উত্তরটি পুরানো এবং সাইমন জিম্মারম্যানের সমাধান থেকে পৃথক নয় । আপনার যদি ফাইল ইউটিলিটি ইনস্টল থাকে তবে আপনি সম্ভবত এই সমাধানটি ব্যবহার করতে পারেন। এটি আমার জন্য ফাইল -5.32 নিয়ে কাজ করে। ধীরে ধীরে আপনাকে ফাইল প্যাকেজের জন্য অজগর ইউএসই-পতাকা সক্ষম করতে হবে।
বোডো

35

এটি খুব সহজ বলে মনে হচ্ছে

>>> 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)

ওল্ড পোস্ট উল্লেখ করুন

আপডেট - @ গ্যারেটস মন্তব্য অনুসারে, অজগর 3 এ এটি আরও সহজ:

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

4
আমি মনে করি না যে আপনার উদাহরণে urllib প্রয়োজন।
ব্রাদারজ্যাক

5
পাইথন ৩. এক্স এর জন্য আমদানি urllib প্রতিস্থাপন করুন urlib আমদানির অনুরোধ থেকে। এবং তারপরে urllib এর পরিবর্তে "অনুরোধ" ব্যবহার করুন
অর্জুন ঠাকুর

1
অজগর ২.7 এর জন্যও কাজ করে
জয় মোদি

@ ওটজি এর সমাধান এই মডিউলটি ব্যবহার করে তবে এটি আরও সহজ।
গ্যারেট

11

3 টি পৃথক গ্রন্থাগার রয়েছে যা লিবমাজিককে আবৃত করে।

এর মধ্যে দুটি পাইপিতে উপলব্ধ (তাই পাইপ ইনস্টল কাজ করবে):

  • filemagic
  • পাইথন-জাদু

এবং অন্যটি, পাইথন-ম্যাজিকের অনুরূপ সরাসরি সর্বশেষতম লিবারজিক উত্সগুলিতে উপলব্ধ এবং এটি সম্ভবত আপনার লিনাক্স বিতরণে রয়েছে।

ডেবিয়ায় প্যাকেজ পাইথন-ম্যাজিক এটি সম্পর্কে এবং এটি টোভোটুওও বলে ব্যবহৃত হয় এবং এটি সাইমন জিম্মারম্যান বলেছেন (আইএমএইচও) বলে এটি অপ্রচলিত নয়।

এটি আমার কাছে অন্যটি গ্রহণ (লিবিম্যাগিকের মূল লেখক দ্বারা) মনে হয়েছে।

খুব খারাপ সরাসরি পাইপিতে পাওয়া যায় না।


আমি সুবিধার্থে একটি রেপো যুক্ত করেছি: github.com/mammadori/magic-python আপনি যেভাবে করতে পারেন: pip install -e git://github.com/mammadori/magic-python.git#egg=Magic_file_extensions
mammadori

10

অজগর ২.6 এ:

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

6
এটি অপ্রয়োজনীয়, যেহেতু fileকমান্ডটি মূলত লিবমাজিকের চারপাশে কেবল একটি মোড়ক। আপনি পাশাপাশি সাইমন এর উত্তরে পাইথন বাইন্ডিং (পাইথন-ম্যাজিক) ব্যবহার করতে পারেন।
মেকানিকাল শামুক 6

6
এটি অপারেটিং সিস্টেমের উপর নির্ভর করে। ম্যাক ওএস এক্সে, উদাহরণস্বরূপ, আপনার কাছে "ফাইল" আছে তবে স্বাভাবিক পরিবেশে লিবম্যাগিক নয়।
rptb1

9

2017 আপডেট

গিথুব যাওয়ার দরকার নেই, এটি পাইপিতে অন্য নামে রয়েছে:

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'

আপনি কি জেএস বা সিএসএস ফাইলের জন্য একই কাজ করতে পারেন?
কুম্ভনিভবেশ

অবশ্যই, কেন না ??
গ্রিংগো সুভেভ

9

পাইথনকে লাইবমেজিকের সাথে সম্পর্কিত করে

এই বিষয়ে সমস্ত পৃথক উত্তর খুব বিভ্রান্তিকর, তাই আমি আশা করি যে লিবারম্যাজিকের বিভিন্ন বাইন্ডিংয়ের এই সংক্ষিপ্ত বিবরণটি দিয়ে আরও কিছুটা স্পষ্টতা দিব। এর আগে মাম্মডোরি উপলব্ধ বিকল্পটি তালিকাভুক্ত একটি সংক্ষিপ্ত উত্তর দিয়েছিল ।

libmagic

কোনও ফাইল মাইম-টাইপ নির্ধারণ করার সময়, পছন্দসই সরঞ্জামটি সহজভাবে বলা হয় fileএবং এর ব্যাক-এন্ড বলা হয় libmagic। (দেখুন প্রকল্পের হোম পৃষ্ঠাটি )) প্রকল্পটি একটি বেসরকারী সিভিএস-সংগ্রহস্থলে তৈরি করা হয়েছে তবে গিথুবটিতে কেবল পঠনযোগ্য গিট মিরর রয়েছে

এখন এই সরঞ্জামটি, যা আপনার প্রয়োজন হবে যদি আপনি পাইথনের সাথে কোনও লিবমাজিক বাইন্ডিং ব্যবহার করতে চান তবে ইতিমধ্যে এটির নিজস্ব পাইথন বাইন্ডিং রয়েছে file-magic। তাদের জন্য অনেক ডেডিকেটেড ডকুমেন্টেশন নয়, কিন্তু আপনি সবসময় সি-লাইব্রেরির man পৃষ্ঠা কটাক্ষপাত আছে করুন: man libmagic। মৌলিক ব্যবহারের বর্ণনা দেওয়া আছে রিডমি ফাইলটিতে :

import magic

detected = magic.detect_from_filename('magic.py')
print 'Detected MIME type: {}'.format(detected.mime_type)
print 'Detected encoding: {}'.format(detected.encoding)
print 'Detected file type name: {}'.format(detected.name)

এগুলি ছাড়াও আপনি ব্যবহার করে কোনও Magicঅবজেক্ট তৈরি করে লাইব্রেরিটি ব্যবহার করতে পারেনmagic.open(flags) উদাহরণ ফাইলে যেমন দেখানো হয়েছে তেমন ।

টোভোটুও এবং ইওআর 2 সান উভয়ই সরঞ্জামটিতেfile-magic অন্তর্ভুক্ত এই বাইন্ডিংগুলি ব্যবহার করে file। তারা ভুল করে ধরে নিয়েছে, তারা python-magicপ্যাকেজটি ব্যবহার করছে । এটি ইঙ্গিত করে বলে মনে হচ্ছে, যদি উভয়ই fileএবংpython-magic ইনস্টল করা, পাইথন মডিউল magicসাবেক এক বোঝায়।

পাইথন-জাদু

এটি সেই লাইব্রেরি যা সাইমন জিম্মারম্যান তার উত্তরে কথা বলেছে এবং এটি ক্লাড কোলম্ব পাশাপাশি নিয়োগ করেছে বিদেশী Suave থেকে

filemagic

বিঃদ্রঃ : এই প্রকল্পটি সর্বশেষ 2013 সালে আপডেট হয়েছিল!

একই সি-এপিআই ভিত্তিক হওয়ার কারণে, এই লাইব্রেরির file-magicঅন্তর্ভুক্তের সাথে কিছু মিল রয়েছে libmagic। এটি কেবল মাম্মাদুরি দ্বারা উল্লেখ করা হয়েছে এবং অন্য কোনও উত্তর এটি নিয়োগ করে না।


7

@ toivotuo এর পদ্ধতিটি পাইথন 3 এর অধীনে আমার জন্য সবচেয়ে ভাল এবং সবচেয়ে নির্ভরযোগ্যতার সাথে কাজ করেছে। আমার লক্ষ্যটি ছিল জিজেপড ফাইলগুলি সনাক্ত করা যাগুলির একটি নির্ভরযোগ্য .gz এক্সটেনশন নেই। আমি পাইথন 3-ম্যাজিক ইনস্টল করেছি।

import magic

filename = "./datasets/test"

def file_mime_type(filename):
    m = magic.open(magic.MAGIC_MIME)
    m.load()
    return(m.file(filename))

print(file_mime_type(filename))

একটি জিপিড ফাইলের জন্য এটি ফিরে আসে: অ্যাপ্লিকেশন / জিজিপ; অক্ষরসেট = বাইনারি

আনজিপড টেক্সট ফাইলের জন্য (আইওস্ট্যাট ডেটা): পাঠ্য / প্লেইন; অক্ষরসেট = US-ASCII

ট্যারে ফাইলের জন্য: অ্যাপ্লিকেশন / এক্স-টার; অক্ষরসেট = বাইনারি

একটি bz2 ফাইলের জন্য: অ্যাপ্লিকেশন / x-bzip2; অক্ষরসেট = বাইনারি

এবং সর্বশেষে তবে আমার জন্য একটি। জিপ ফাইল: অ্যাপ্লিকেশন / জিপ; অক্ষরসেট = বাইনারি


7

পাইথন 3 রেফ: https://docs.python.org/3.2/library/mimetypes.html

mimetyype.guess_type (url, কঠোর = সত্য) কোনও url এর দ্বারা প্রদত্ত ফাইলের নাম বা URL এর ভিত্তিতে কোনও ফাইলের ধরণটি অনুমান করুন। রিটার্ন মান হ'ল একটি টিউপল (টাইপ, এনকোডিং) যেখানে প্রকারটি অনুমান করা যায় না (অনুপস্থিত বা অজানা প্রত্যয়) বা 'টাইপ / সাব টাইপ' ফর্মের একটি স্ট্রিং, মাইমাইট কনটেন্ট-টাইপ শিরোলেখের জন্য ব্যবহারযোগ্য।

এনকোডিং কোনও এনকোডিংয়ের জন্য নয় বা এনকোডে ব্যবহৃত প্রোগ্রামটির নাম নয় (যেমন: সংক্ষেপণ বা জিজিপ)। এনকোডিংটি সামগ্রী-স্থানান্তর-এনকোডিং শিরোনাম হিসাবে নয়, সামগ্রী-এনকোডিং শিরোনাম হিসাবে ব্যবহারের জন্য উপযুক্ত। ম্যাপিংগুলি টেবিল চালিত। এনকোডিং প্রত্যয়গুলি কেস সংবেদনশীল; টাইপ প্রত্যয়গুলি প্রথমে সংবেদনশীলভাবে কেস চেষ্টা করা হয়, তারপরে সংবেদনশীলতার সাথে কেস হয়।

Alচ্ছিক কঠোর যুক্তি হ'ল একটি পতাকা যা নির্দিষ্ট করা এমআইএমআই টাইপের তালিকা কেবল আইএএনএতে নিবন্ধিত সরকারী প্রকারের মধ্যে সীমাবদ্ধ কিনা তা উল্লেখ করে। যখন কঠোরভাবে সত্য হয় (ডিফল্ট), কেবল আইএএনএ প্রকারগুলি সমর্থিত হয়; যখন কঠোরভাবে মিথ্যা হয়, কিছু অতিরিক্ত অ-মানক তবে সাধারণত ব্যবহৃত এমআইএমআই টাইপগুলিও স্বীকৃত হয়।

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

6

আপনি কোন ওয়েব সার্ভারটি ব্যবহার করছেন তা আপনি বলেন নি, তবে অ্যাপাচে মাইম ম্যাজিক নামে একটি ছোট্ট মডিউল রয়েছে যা এটি যখন বলা হয় তখন কোনও ফাইলের ধরণ নির্ধারণ করতে এটি ব্যবহার করে। এটি ফাইলের কিছু বিষয়বস্তু পড়ে এবং এটি খুঁজে পাওয়া অক্ষরের উপর ভিত্তি করে এটি কী প্রকারের তা নির্ধারণের চেষ্টা করে। এবং ডেভ ওয়েব হিসাবে মাইমটাইপস মডিউল উল্লেখ করা হয়েছে পাইথন অধীনে কাজ করবে প্রদত্ত একটি এক্সটেনশন সুবিধাজনক।

বিকল্পভাবে, আপনি যদি একটি ইউনিক্স বাক্সে বসে থাকেন তবে আপনি sys.popen('file -i ' + fileName, mode='r')মাইমির ধরণটি ধরতে পারেন । উইন্ডোজের সমমানের কমান্ড থাকা উচিত, তবে এটি কী তা সম্পর্কে আমি নিশ্চিত নই।


7
আজকাল আপনি কেবলমাত্র সাবপ্রসেসকস.চেক_আউটপুট করতে পারেন (['ফাইল', '-বি', '--মাইম', ফাইলের নাম])
নাথান

পাইথন-ম্যাজিক সমতুল্যভাবে কাজ করে, সমস্ত মোড়ানো এবং আরামদায়ক যখন বাহ্যিক সরঞ্জাম ব্যবহার করে তখনই প্রকৃতির কোনও কারণ নেই।
11:33

4

পাইথন ৩.x এবং ওয়েব অ্যাপ্লিকেশনটিতে ইউআরএল ফাইলটিতে যার কোনও এক্সটেনশন বা জাল এক্সটেনশন থাকতে পারে না। আপনার ব্যবহার করে অজগর-যাদু ইনস্টল করা উচিত

pip3 install python-magic

ম্যাক ওএস এক্সের জন্য, আপনার ব্যবহার করে লিবম্যাগিক ইনস্টল করা উচিত

brew install libmagic

টুকিটাকি সংকেতলিপি

import urllib
import magic
from urllib.request import urlopen

url = "http://...url to the file ..."
request = urllib.request.Request(url)
response = urlopen(request)
mime_type = magic.from_buffer(response.readline())
print(mime_type)

বিকল্পভাবে আপনি একটি আকার পড়তে পারেন

import urllib
import magic
from urllib.request import urlopen

url = "http://...url to the file ..."
request = urllib.request.Request(url)
response = urlopen(request)
mime_type = magic.from_buffer(response.read(128))
print(mime_type)

এটি কি পুরো ফাইল লোড হবে?
29 凡

না, এটি একটি স্রোত, তাই সাধারণত কিছুটা বাইট।
ক্লড ক্লোম্ব

আমি প্রতিক্রিয়া.আডলাইন () বা প্রতিক্রিয়া দ্বারা সম্পাদনা করেছি .আপনি (128) আপনাকে ধন্যবাদ!
ক্লোড COMOMOME

3

আমি প্রথমে মাইম টাইপস লাইব্রেরি চেষ্টা করি। যদি এটি কাজ না করে, আমি তার পরিবর্তে পাইথন-ম্যাজিক লিবারি ব্যবহার করি।

import mimetypes
def guess_type(filename, buffer=None):
mimetype, encoding = mimetypes.guess_type(filename)
if mimetype is None:
    try:
        import magic
        if buffer:
            mimetype = magic.from_buffer(buffer, mime=True)
        else:
            mimetype = magic.from_file(filename, mime=True)
    except ImportError:
        pass
return mimetype

1

মাইমটাইপস মডিউল কেবল ফাইল এক্সটেনশনের উপর ভিত্তি করে একটি ফাইল টাইপ সনাক্ত করে। আপনি যদি এক্সটেনশন ছাড়াই কোনও ফাইলের কোনও ফাইল পুনরুদ্ধার করতে চেষ্টা করেন, মিমটাইপগুলি কাজ করবে না।


3
আমি সত্য মনে করি না। মাইম টাইপটি কীভাবে অন্যদের একটি ডেটা ফর্ম্যাট সম্পর্কে জানাতে হয়, কীভাবে কীভাবে নিজেকে ডাটা ফর্ম্যাটটি সন্ধান করতে হয় তা নয়। আপনি যদি এমন কোনও সরঞ্জাম ব্যবহার করেন যা কেবলমাত্র এক্সটেনশনের ভিত্তিতে ফর্ম্যাটটি অনুমান করে এবং এমআইএমআই টাইপগুলি মুদ্রণ করে তবে কোনও ফাইল এক্সটেনশন না থাকলে আপনি সেই সরঞ্জামটি ব্যবহার করতে পারবেন না। তবে বিন্যাসটি অনুমান করার অন্যান্য উপায়গুলিও সম্ভব, উদাহরণস্বরূপ, পার্সার দিয়ে পরীক্ষা করে।
এরিকবার্ক

1

আমি অবাক হয়েছি যে পাইগমেন্টস ব্যতীত অন্য কেউ এর উল্লেখ করেনি মাইম ধরণের, বিশেষত পাঠ্য নথির বিষয়ে একটি শিক্ষিত অনুমান করতে সক্ষম।

পাইগমেন্টগুলি আসলে পাইথন সিনট্যাক্স হাইলাইটিং লাইব্রেরি তবে এটির এমন একটি পদ্ধতি রয়েছে যা আপনার নথির ৫০০ টি সমর্থিত ডকুমেন্টের মধ্যে কোনটি সম্পর্কে শিক্ষিত অনুমান করতে পারে। যেমন সি ++ বনাম সি # বনাম পাইথন বনাম ইত্যাদি

import inspect

def _test(text: str):
    from pygments.lexers import guess_lexer
    lexer = guess_lexer(text)
    mimetype = lexer.mimetypes[0] if lexer.mimetypes else None
    print(mimetype)

if __name__ == "__main__":
    # Set the text to the actual defintion of _test(...) above
    text = inspect.getsource(_test)
    print('Text:')
    print(text)
    print()
    print('Result:')
    _test(text)

আউটপুট:

Text:
def _test(text: str):
    from pygments.lexers import guess_lexer
    lexer = guess_lexer(text)
    mimetype = lexer.mimetypes[0] if lexer.mimetypes else None
    print(mimetype)


Result:
text/x-python

এখন, এটি নিখুঁত নয়, তবে আপনার যদি 500 ডকুমেন্ট ফর্ম্যাটগুলির মধ্যে কোনটি ব্যবহার করা হচ্ছে তা জানার দরকার হয় তবে এটি খুব সুন্দর ব্যবহারযোগ্য।


0

আমি অনেক উদাহরণ চেষ্টা করেছি কিন্তু জ্যাঙ্গো মিউটেজেনের সাথে দুর্দান্ত অভিনয় করে।

ফাইল আছে কিনা তা পরীক্ষা করে দেখার উদাহরণ mp3

from mutagen.mp3 import MP3, HeaderNotFoundError  

try:
    audio = MP3(file)
except HeaderNotFoundError:
    raise ValidationError('This file should be mp3')

খারাপ দিকটি হ'ল ফাইলের ধরণগুলি পরীক্ষা করার ক্ষমতাটি সীমিত তবে আপনি যদি কেবল ফাইলের জন্যই পরীক্ষা করতে চান না তবে অতিরিক্ত তথ্য অ্যাক্সেস করতে চান তবে এটি দুর্দান্ত উপায়।




0

বাইট অ্যারে টাইপের ডেটার জন্য আপনি ম্যাজিক ব্যবহার করতে পারেন bফর্ম_বাফার (_বাইট_আরে, মাইম = ট্রু)


-1

আপনি imghdr পাইথন মডিউলটি ব্যবহার করতে পারেন ।


1
এটি কোনও সহায়ক মন্তব্য নয়, কারণ এটি উদাহরণ দেয় না বা এটি সত্যিই বলে না যে এখানে বা কেন ইমিগডিআর সাহায্য করবে।
এরিকবওয়ার্ক

2
হ্যাঁ, আমি এটি বুঝতে পারি। এটি এক বছর পেরিয়ে গেছে তবে সম্ভবত আপনি এখনও এটি আপডেট করতে পারবেন কারণ এখনও আমার মতো এই প্রশ্নটির সন্ধানকারী লোক রয়েছে। আপনার যদি সাহায্যের দরকার হয় তবে আপনি আমাকে বলতে পারেন।
এরিকবওয়ার্ক

1
এটি শুধুমাত্র চিত্রের ধরণের খুব সীমিত তালিকার জন্য কাজ করে। এটি পাঠ্য ফাইল, সংকুচিত সংরক্ষণাগার, নথি ফর্ম্যাট ইত্যাদি সম্পর্কে কোনও ধারণা নেই
ট্রিপলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.