मैं एक स्ट्रिंग की सामग्री के साथ फ़ाइल जैसी ऑब्जेक्ट (फ़ाइल के रूप में एक ही प्रकार) कैसे बना सकता हूं?
मैं एक स्ट्रिंग की सामग्री के साथ फ़ाइल जैसी ऑब्जेक्ट (फ़ाइल के रूप में एक ही प्रकार) कैसे बना सकता हूं?
जवाबों:
पायथन 2.x के लिए, स्ट्रिंगो मॉड्यूल का उपयोग करें । उदाहरण के लिए:
>>> from cStringIO import StringIO
>>> f = StringIO('foo')
>>> f.read()
'foo'
मैं cStringIO (जो तेज है) का उपयोग करता हूं, लेकिन ध्यान दें कि यह यूनिकोड स्ट्रिंग्स को स्वीकार नहीं करता है जो सादे ASCII स्ट्रिंग्स के रूप में एन्कोड नहीं किया जा सकता है । (आप "स्ट्रिंग से cStringIO" से "स्ट्रिंग से" बदलकर स्विच कर सकते हैं।)
पायथन 3.x के लिए, io
मॉड्यूल का उपयोग करें ।
f = io.StringIO('foo')
io.StringIO(u'foo')
मैं भी इसका इस्तेमाल
पायथन 3.0 में:
import io
with io.StringIO() as f:
f.write('abcdef')
print('gh', file=f)
f.seek(0)
print(f.read())
with
-statement को दर्शाता है और लिखता है, प्रिंट करता है, तलाश करता है, पढ़ता है।
यदि आपकी फ़ाइल जैसी ऑब्जेक्ट में बाइट्स होने की उम्मीद है, तो स्ट्रिंग को पहले बाइट्स के रूप में एन्कोड किया जाना चाहिए, और उसके बाद बाइट्सियो ऑब्जेक्ट का उपयोग किया जा सकता है। पायथन 3 में:
from io import BytesIO
string_repr_of_file = 'header\n byline\n body\n body\n end'
function_that_expects_bytes(BytesIO(bytes(string_repr_of_file,encoding='utf-8')))
दो अच्छे जवाब। मैं थोड़ा ट्रिक जोड़ूंगा - अगर आपको एक वास्तविक फ़ाइल ऑब्जेक्ट की आवश्यकता है (कुछ तरीके एक की अपेक्षा करते हैं, न कि केवल एक इंटरफ़ेस), तो यहां एक एडेप्टर बनाने का एक तरीका है: