पायथन के मानक पुस्तकालय में 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 मॉड्यूल में परिभाषित है।