Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में फ़ाइल और निर्देशिका तुलना

पायथन के मानक पुस्तकालय में filecmp मॉड्यूल है जो फाइलों और निर्देशिकाओं की तुलना के लिए कार्यों को परिभाषित करता है। यह तुलना उनमें डेटा के अलावा फाइलों के गुणों को भी ध्यान में रखती है।

इस आलेख में उदाहरण कोड निम्न फ़ाइल और निर्देशिका संरचना का उपयोग करते हैं।

दो निर्देशिका dir1 और dir2 पहले वर्तमान कार्यशील निर्देशिका के तहत बनाई गई हैं। उनमें निम्नलिखित फाइलें हैं।

--dir1/newfile.txt--
This is a file in dir1
--dir1/file1.txt--
Hello Python
--dir1/file2.txt--
Python Standard Library
--dir2/file1.txt--
Hello Python
--dir2/file2.txt--
Python Library

आइए अब filecmp मॉड्यूल में विभिन्न तुलना कार्यों का वर्णन करें।

filecmp.cmp(f1, f2, उथला=ट्रू)

यह फ़ंक्शन दो फ़ाइलों की तुलना करता है और यदि वे समान हैं, तो सही है, अन्यथा गलत है। उथला पैरामीटर डिफ़ॉल्ट रूप से सही है। इसलिए फ़ाइल मेटाडेटा को सामग्री के अलावा तुलना के लिए माना जाता है। यदि उथले को गलत पर सेट किया जाता है, तो केवल सामग्री की तुलना की जाती है।

हमारी फ़ाइल संरचना के आधार पर, निम्न कोड दिखाए गए अनुसार आउटपुट देता है -

Differing files : ['file2.txt']
>>> filecmp.cmp('dir1/file1.txt', 'dir2/file1.txt')
True
>>> filecmp.cmp('dir1/file1.txt', 'dir2/file1.txt', shallow = False)
True
>>> filecmp.cmp('dir1/file2.txt', 'dir2/file2.txt')
False

filecmp.cmpfiles(dir1, dir2, उथला)

यह फ़ंक्शन दो निर्देशिकाओं में फ़ाइलों की तुलना करता है और तीन आइटम टपल देता है। टपल में पहला आइटम मेल खाने वाली फाइलों की सूची है, दूसरा बेजोड़ फाइलों की सूची दिखाता है, और तीसरा सामान्य फाइलों की सूची है।

>>> match, mismatch,errors = filecmp.cmpfiles('dir1','dir2',['file1.txt', 'file2.txt'])
>>> match
['file1.txt']
>>> mismatch
['file2.txt']
>>> errors
[]

filecmp मॉड्यूल dircmp वर्ग को भी परिभाषित करता है। इसकी वस्तु निर्देशिका तुलना वस्तु है। यह दो निर्देशिकाओं में फ़ाइलों की तुलना करता है, जिन्हें बाएँ और दाएँ निर्देशिका के रूप में पहचाना जाता है। ऑब्जेक्ट नीचे वर्णित विभिन्न विधियों को निष्पादित कर सकता है -

filecmp.dircmp(a,b)

यह कंस्ट्रक्टर है। ए और बी तुलना की जाने वाली निर्देशिकाएं हैं। डिफ़ॉल्ट रूप से निर्देशिकाओं में सिस्टम फ़ाइलें छिपी होती हैं और तुलना में अनदेखा की जाती हैं।

>>> result = filecmp.dircmp('dir1', 'dir2')

dircmp वर्ग में अन्य विधियाँ इस प्रकार हैं -

रिपोर्ट ()

यह विधि निर्देशिकाओं के बीच तुलना के परिणाम को प्रिंट करती है।

>>> result = filecmp.dircmp('dir1', 'dir2')
>>> result.report()
diff dir1 dir2
Only in dir1 : ['newfile.txt']
Identical files : ['file1.txt']
Differing files : ['file2.txt']

बाएं, दाएं

ये गुण dircmp कंस्ट्रक्टर में पहली और दूसरी निर्देशिकाओं के नाम प्रिंट करते हैं

>>> result.left
'dir1'
>>> result.right
'dir2'

बाएं_सूची, दाएं_सूची

ये विशेषताएँ दोनों निर्देशिकाओं में फ़ाइलों की सूची लौटाती हैं

>>> result.left_list
['file1.txt', 'file2.txt', 'newfile.txt']
>>> result.right_list
['file1.txt', 'file2.txt']

कॉमन, कॉमन_फाइल्स, कॉमन_डीआईआर

ये विशेषताएँ सामान्य फ़ाइलें और निर्देशिकाएँ, केवल सामान्य फ़ाइलें और केवल सामान्य निर्देशिकाएँ लौटाती हैं।

>>> result.common
['file1.txt', 'file2.txt']
>>> result.common_files
['file1.txt', 'file2.txt']
>>> result.common_dirs
[]

same_file, diff_files

विशेषताएँ dircmp वर्ग में परिभाषित तुलना ऑपरेटर का उपयोग करके समान फ़ाइलों और विभिन्न फ़ाइलों की सूची लौटाती हैं।

>>> result.same_files
['file1.txt']
>>> result.diff_files
['file2.txt']

यह आलेख dircmp वर्ग, इसकी विधियों और फ़ाइल तुलना फ़ंक्शन पर चर्चा करता है जो filecmp मॉड्यूल में परिभाषित है।


  1. पायथन का उपयोग करके फ़ाइल को कैसे हटाएं?

    आप ओएस मॉड्यूल में फ़ंक्शन के साथ एक फ़ाइल या एक खाली फ़ोल्डर को हटा सकते हैं। उदाहरण के लिए, यदि आप किसी फ़ाइल को हटाना चाहते हैं a.txt, >>> import os >>> os.remove('a.txt') os.remove का तर्क निरपेक्ष या सापेक्ष पथ होना चाहिए। आप os.unlink() रिमूव फाइल्स का भी इस्तेमाल कर

  1. मैं पायथन में एक फ़ाइल की प्रतिलिपि कैसे बना सकता हूं?

    Shutil मॉड्यूल फाइलों की प्रतिलिपि बनाने के साथ-साथ संपूर्ण फ़ोल्डरों के लिए कार्य प्रदान करता है। कॉल करने बंद करें। कॉपी (स्रोत, गंतव्य) पथ स्रोत पर फ़ाइल को पथ गंतव्य पर फ़ोल्डर में कॉपी कर देगा। (स्रोत और गंतव्य दोनों तार हैं।) यदि गंतव्य एक फ़ाइल नाम है, तो इसे कॉपी की गई फ़ाइल के नए नाम के रू

  1. पायथन में निर्देशिका में एकाधिक फ़ाइलों को कैसे हटाएं?

    आप ओएस मॉड्यूल में कार्यों के साथ एक फ़ाइल या एक खाली फ़ोल्डर को हटा सकते हैं। उदाहरण उदाहरण के लिए, यदि आप किसी फ़ाइल को हटाना चाहते हैं my_file.txt, >>> import os >>> os.remove('my_file.txt') os.remove का तर्क पूर्ण या सापेक्ष पथ होना चाहिए। एकाधिक फ़ाइलों को हटाने के