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

रूबी में निर्देशिकाओं के साथ कैसे काम करें?

क्या आप जानते हैं कि आप रूबी के साथ अपने फाइल सिस्टम को नेविगेट कर सकते हैं?

रूबी "Dir" क्लास के साथ।

आप निर्देशिका प्रविष्टियों को सूचीबद्ध कर सकते हैं, अपनी वर्तमान निर्देशिका बदल सकते हैं और यहां तक ​​कि नए फ़ोल्डर भी बना सकते हैं!

यहां एक उदाहरण दिया गया है :

filenames = Dir.entries(".")

यह entries विधि फ़ाइल नाम प्रविष्टियों की एक सरणी देता है। प्रत्येक प्रविष्टि एक स्ट्रिंग है, इसलिए यदि आप वास्तव में इन फ़ाइलों को पढ़ना चाहते हैं, तो आपको इसे रूबी फ़ाइल वर्ग के साथ संयोजित करना होगा।

बीटीडब्ल्यू, यह बिंदु (. ) वर्तमान निर्देशिका . का प्रतिनिधित्व करता है ।

यह वह निर्देशिका होगी जिससे आपका कोड चल रहा है, न कि वह निर्देशिका जो आप (अपने टर्मिनल में) कोड चलाते समय हैं।

उसके कारण…

Dir.pwd . का उपयोग करके अपनी वर्तमान निर्देशिका की जांच करना सहायक हो सकता है विधि।

अब :

आइए जानें कि Dir का उपयोग कैसे करें नई निर्देशिका बनाने के लिए वर्ग (mkdir ), उनका नाम बदलें (mv ), और एक विशिष्ट पैटर्न का पालन करने वाले फ़ाइल नाम खोजें (glob )।

नई निर्देशिका बनाने के लिए रूबी की Mkdir विधि का उपयोग करना

यदि आप रूबी के साथ एक नया फ़ोल्डर बनाना चाहते हैं तो आप Dir.mkdir . का उपयोग कर सकते हैं विधि।

उदाहरण :

Dir.mkdir("testing")

यदि एक सापेक्ष पथ दिया जाता है, तो यह निर्देशिका वर्तमान पथ के अंतर्गत बनाई जाती है (Dir.pwd )।

आपको कुछ त्रुटियां मिल सकती हैं :

  • निर्देशिका पहले से मौजूद है (Errno::EEXIST )
  • अनुमति अस्वीकृत (Errno::EACCES )
  • आप किसी अन्य फ़ोल्डर के अंतर्गत एक फ़ोल्डर बनाने का प्रयास कर रहे हैं जो अभी तक मौजूद नहीं है (Errno::ENOENT )

अंतिम त्रुटि आमतौर पर तब होती है जब आप नेस्टेड निर्देशिका बनाने का प्रयास कर रहे होते हैं।

या यदि आप एक ऐसे निरपेक्ष पथ का उपयोग कर रहे हैं जो मौजूद नहीं है।

दो समाधान :

  • जांचें कि निर्देशिका इसे बनाने से पहले मौजूद है या नहीं (Dir.exists? )
  • अधिक उन्नत कक्षा का उपयोग करें (अगला भाग)

आइए सीखते रहें!

FileUtils मॉड्यूल के साथ उन्नत संचालन

यदि आपको अतिरिक्त हॉर्सपावर की आवश्यकता है तो आप FileUtils . में ला सकते हैं मानक पुस्तकालय से मॉड्यूल।

इसमें mkdir_p . जैसी विधियां शामिल हैं जो एक चरण में नेस्टेड निर्देशिकाएं बनाते हैं।

यहां एक उदाहरण दिया गया है :

require 'fileutils'

FileUtils.mkdir_p("/tmp/testing/a/b")

बहुत बढ़िया, है ना?

इतना ही नहीं, FileUtils कीवर्ड तर्कों के रूप में सभी फ़ाइल संचालन के लिए अतिरिक्त विकल्प भी लाता है। verbose की तरह विकल्प (लिनक्स कमांड प्रिंट करता है) और noop (फाइलें न बदलें) विकल्प।

इसे आज़माएं!

निर्देशिकाओं का नाम कैसे बदलें

रूबी आपको अपने ऑपरेटिंग सिस्टम यूजर इंटरफेस, या टर्मिनल से हर ऑपरेशन करने की अनुमति देती है।

उदाहरण के लिए…

आप इस तरह की निर्देशिका का नाम बदल सकते हैं :

FileUtils.mv("/tmp/a", "/tmp/b")

आपको FileUtils . का भी उपयोग करना होगा यहाँ क्योंकि mv Dir . पर उपलब्ध नहीं है कक्षा।

अपनी वर्तमान निर्देशिका कैसे बदलें

चूंकि सभी निर्देशिका संचालन वर्तमान निर्देशिका से चलाए जाते हैं, आप इसे बदलना चाह सकते हैं।

आप Dir.chdir . का उपयोग कर सकते हैं ऐसा करने की विधि।

उदाहरण :

Dir.chdir("/tmp") { Dir.entries(".") }

यह दो तरह से काम करता है :

  • ब्लॉक के साथ, वर्तमान निर्देशिका केवल ब्लॉक के अंदर कोड के लिए बदलती है
  • ब्लॉक के बिना, यह मेथड कॉल के बाद सभी कोड के लिए बदल जाता है

ध्यान दें कि chdir केवल आपकी रूबी प्रक्रिया के भीतर काम करता है, यह "बाहरी दुनिया" को प्रभावित नहीं करता है।

दूसरे शब्दों में…

आपके रूबी प्रोग्राम के चलने के बाद यह आपके शेल की कार्यशील निर्देशिका को नहीं बदलेगा।

फाइलों और निर्देशिकाओं को पैटर्न मिलान के साथ सूचीबद्ध करना

एक फ़ोल्डर में सभी रूबी फ़ाइलों को खोजना चाहते हैं? glob . के साथ एक आसान काम विधि!

उदाहरण :

Dir.glob("*.rb")

आप अपने इच्छित किसी अन्य एक्सटेंशन का उपयोग कर सकते हैं, जैसे ".txt", या ".yml"। या कोई अन्य पाठ जो फ़ाइल नाम का हिस्सा है।

सभी फ़ोल्डरों के अंदर फ़ाइलें ढूंढना चाहते हैं?

हां, यह संभव है:

Dir.glob("**/*.rb")

परिणाम सापेक्ष पथ सहित सभी फ़ाइल नामों के साथ एक सरणी है। आप File.basename . का उपयोग करके पथ को हटा सकते हैं और केवल फ़ाइल नाम प्राप्त कर सकते हैं सूची की प्रत्येक फ़ाइल पर विधि जो आपको glob . से प्राप्त होती है ।

सारांश

आपने Dir . का उपयोग करके रूबी में निर्देशिकाओं के साथ काम करना सीख लिया है &FileUtils कक्षाएं।

अब इसे व्यवहार में लाने की आपकी बारी है।

पढ़ने के लिए धन्यवाद!


  1. रूबी 2.6 में एमजेआईटी क्या है और यह कैसे काम करता है?

    रूबी के प्रदर्शन में बहुत सुधार हो रहा है, संस्करण दर संस्करण… और रूबी विकास टीम रूबी को और भी तेज बनाने के लिए हर संभव प्रयास कर रही है! इन प्रयासों में से एक 3×3 परियोजना है। लक्ष्य? रूबी 3.0, रूबी 2.0 से 3 गुना तेज होगा । इस प्रोजेक्ट का एक हिस्सा नया MJIT कंपाइलर है, जो इस लेख का विषय है। MJ

  1. रूबी रेंज:वे कैसे काम करते हैं?

    रूबी में रेंज क्या है और यह कैसे काम करती है? एक श्रेणी एक ऐसी वस्तु है जिसका प्रारंभिक मूल्य और समाप्ति मूल्य होता है, वे आपको अनुक्रम बनाने में मदद करते हैं जो इन दो मानों के बीच पूरी श्रृंखला को फैलाते हैं। आप 1 . से जा सकते हैं करने के लिए 20 , या a . से करने के लिए z । इस लेख में आप जानेंगे

  1. रूबी के साथ एक पार्सर कैसे बनाएं

    पार्सिंग स्ट्रिंग्स के एक गुच्छा को समझने और उन्हें किसी ऐसी चीज़ में बदलने की कला है जिसे हम समझ सकते हैं। आप रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं, लेकिन वे हमेशा कार्य के लिए उपयुक्त नहीं होते हैं। उदाहरण के लिए, यह सामान्य ज्ञान है कि नियमित अभिव्यक्तियों के साथ HTML को पार्स करना शायद एक अच्छ