स्थानीय फ़ाइल या url से एक IO स्ट्रीम खोलें


104

मुझे पता है कि अन्य भाषाओं में लिबास हैं जो एक स्ट्रिंग ले सकते हैं जिसमें या तो एक स्थानीय फ़ाइल या एक यूआरएल है और इसे पठनीय आईओ स्ट्रीम के रूप में खोलें।

क्या माणिक में ऐसा करने का एक आसान तरीका है?

जवाबों:


224

खुले-उरी मानक रूबी लाइब्रेरी का हिस्सा है, और यह व्यवहार को फिर से परिभाषित करेगा openताकि आप एक यूआरएल, साथ ही एक स्थानीय फ़ाइल खोल सकें। यह एक Fileऑब्जेक्ट लौटाता है , इसलिए आपको जैसे readऔर कॉल करने में सक्षम होना चाहिए readlines।

require 'open-uri'
file_contents = open('local-file.txt') { |f| f.read }
web_contents  = open('http://www.stackoverflow.com') {|f| f.read }

2
क्या किसी फ़ाइल ऑब्जेक्ट को वापस करने का एक तरीका है जैसे आपने एक्शनमेलर अटैचमेंट से यहां किया था?
— अप्रेंटिस

9
जानिए यह अब थोड़ा पुराना है, लेकिन आप यह भी कर सकते हैं:content = open("http://example.com").read
— ऑटोमैटिक

6
आप कर सकते हैं, लेकिन इसे बंद करने के बाहर इस तरह से करना फ़ाइल डिस्क्रिप्टर को खुला रखेगा। यह कुछ usages के लिए एक समस्या हो सकती है।
— आरोन हिनी

19
ध्यान दें कि फाइल स्ट्रीमopen-uri नहीं होगी , इसलिए आप इसके पहले 4k को नहीं पढ़ सकते हैं। खोलने के क्षण में मेमोरी के लिए एक पूरी फ़ाइल पढ़ेंगे । open-uri
— zed_0xff

3
URI.parse('http://www.stackoverflow.com').open { |f| f.read }यदि आप बीमा कराने का तरीका ढूंढते हैं तो यह कॉल नहीं करता है Kernal.open। इसके अलावा रूबोकॉप सुरक्षा नियम भी मिलते हैं।
— newdark-it
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.