2012-10-11 17 views
5

मैं बहुत शुरुआत कर रहा हूं। मैं एक फाइल को पढ़ना और लिखना सीखना चाहता हूं। मैं यही कोशिश कर रहा हूं।मैं उसी निर्देशिका में फ़ाइल से कैसे पढ़ूं?

rdfile = File.open('bhaarat.txt', 'r+') 

दुर्भाग्य से, यह "लौटा रहा है सी: /directoriesblahblah/ubuntu3.rb: 1: 'प्रारंभ' में: ऐसा कोई फ़ाइल या निर्देशिका - bhaarat.txt (errno :: ENOENT)

मेरे पास है के लिए पथ प्राप्त करने के लिए पहले से समाधान मिल गया, लेकिन मैं तो मैं एक जवाब है कि मुझे समझ बनाया उन से बाहर नहीं मिल सका केवल सामान्य रूप में प्रोग्रामिंग करने के लिए रूबी के लिए नया है, लेकिन कोई नई बात नहीं कर रहा हूँ।

धन्यवाद!

+2

क्या आप अपना समाधान पोस्ट कर सकते हैं? –

उत्तर

9

वर्तमान फ़ाइल, आप इसका उपयोग कर सकते हैं:

__FILE__ 

निर्देशिका जिसमें वर्तमान फ़ाइल मौजूद है प्राप्त करने के लिए, आप उपयोग कर सकते हैं:

File.dirname(__FILE__) 

तार से एक रास्ता बनाने के लिए, आप का उपयोग कर सकते हैं:

File.join('part1', 'part2', ...) 

इसलिए, बनाने के लिए उस निर्देशिका में फ़ाइल का पथ, आप इसका उपयोग कर सकते हैं:

File.join(File.dirname(__FILE__), 'filename') 

यदि आपकी फाइल ई नाम bhaarat.txt है, ऊपर हो जाता है:

File.join(File.dirname(__FILE__), 'bhaarat.txt') 

आप की जगह है कि आपके कोड में, आप मिल जाएगा:

rdfile = File.open(File.join(File.dirname(__FILE__), 'bhaarat.txt'), 'r+') 

आप भी इस एक अलग चर कर सकते हैं, अगर आप चाहते हैं, बनाने के लिए कोड अधिक पठनीय:

path = File.join(File.dirname(__FILE__), 'bhaarat.txt') 
rdfile = File.open(path, 'r+') 
+0

+1, बहुत गहन उत्तर –

+0

मैंने Dir.pwd मुद्रित किया और यह गलत निर्देशिका खोज रहा था! तो मुझे लगता है कि किसी को यह सुनिश्चित करने की ज़रूरत है कि यह पहले सही निर्देशिका है। आपकी सहायताके लिए धन्यवाद! – vheissu

+0

Dir.pwd में शामिल होना वास्तव में बेकार है, पथ डिफ़ॉल्ट रूप से इसके सापेक्ष है। –

2

फ़ाइल वर्तमान निर्देशिका में खोजी गई है, न कि निर्देशिका जहां स्क्रिप्ट स्थित है।

C:\> ruby scripts\ubuntu3.rb 
No such file or directory - bhaarat.txt 

पहले फ़ाइल स्थान पर जाएं और फिर स्क्रिप्ट चलाएं। उदाहरण के लिए, यदि फ़ाइल स्क्रिप्ट के साथ एक ही निर्देशिका में स्थित है:

C:\> cd scripts 
C:\scripts> ruby ubuntu3.rb 
1

चाल कुछ ऐसा मिला। एक छोटे से कठिन खोज की है और this पाया:

मैं अपने मूल कोड

rdfile = File.open('bhaarat.txt', 'r+') 

rdfile = File.open(File.join(File.dirname(__FILE__),'bhaarat.txt'), 'r+') 

को बदल दिया है और यह है कि यह निर्देशिका के अपने .rb फ़ाइल निर्देशिका में लग रहे हैं, बजाय बनाता है कि आपका कमांड प्रॉम्प्ट वर्तमान में है।

+1

हालांकि '+ '/ ...'' के बजाय 'File.join' का उपयोग करना पसंद करते हैं, क्योंकि' File.join' आपके द्वारा उपयोग किए जा रहे ओएस के लिए सही पथ बनाएगा। उदाहरण के लिए, विंडोज़ में, पथ 'सी: \ ... \ file.txt' जैसा दिखाई देगा जबकि लिनक्स पर यह '/ home /.../ file.txt' जैसा दिखेगा। – rid

+0

धन्यवाद राडू! मैंने आपके सुझाव से मेल खाने के लिए अपना समाधान बदल दिया। – vheissu

संबंधित मुद्दे