2008-09-26 12 views

उत्तर

81

पायथन 2.x के लिए, StringIO मॉड्यूल का उपयोग करें। उदाहरण के लिए:

>>> from cStringIO import StringIO 
>>> f = StringIO('foo') 
>>> f.read() 
'foo' 

मैं cStringIO (जो तेजी से होता है) का उपयोग, लेकिन वह यह accept Unicode strings that cannot be encoded as plain ASCII strings नहीं है ध्यान दें। (आप स्ट्रिंगियो से "स्ट्रिंगियो से" को "स्ट्रिंगियो" से बदलकर स्विच कर सकते हैं।)

पायथन 3.x के लिए, io मॉड्यूल का उपयोग करें।

f = io.StringIO('foo') 
+1

सीस्ट्रिंगियो का उपयोग करने के लिए अब एक कारण है: cStringIO यूनिकोड स्ट्रिंग का समर्थन नहीं करता है। –

+3

मुझे लगता है कि 'स्ट्रिंगियो के रूप में आयात cStringIO' करना एक बेहतर विचार है। इस तरह यदि आपको किसी भी कारण से शुद्ध पायथन कार्यान्वयन पर स्विच करने की आवश्यकता है, तो आपको केवल एक पंक्ति को बदलने की जरूरत है .. –

+0

यह Python2.7 के लिए भी काम करता है: 'io.StringIO (u'foo ')' मैं इसका उपयोग करूंगा – guettli

22

अजगर 3.0 में:

import io 

with io.StringIO() as f: 
    f.write('abcdef') 
    print('gh', file=f) 
    f.seek(0) 
    print(f.read()) 
+0

@ABB स्वीकार्य उत्तर पहले से ही इस तरह के उपयोग को दिखाता है। मेरा जवाब पूरक है: यह 'स्टेटमेंट' के साथ प्रदर्शित करता है और लिखता है, प्रिंट करता है, तलाशता है, पढ़ता है। – jfs

2

दो अच्छा जवाब। मैं एक छोटे से चाल जोड़ना होगा - अगर आप कोई वास्तविक फ़ाइल वस्तु की जरूरत है (कुछ तरीकों एक ही नहीं, एक अंतरफलक उम्मीद), यहाँ एक एडाप्टर बनाने के लिए एक तरीका है:

+0

"पृष्ठ नहीं मिला" - http://www.rfk.id.au/software/projects/filelike/api/filelike.htm – jfs

+0

क्या शर्म की बात है। मूल पाया नहीं जा सकता ... –

+1

अब बैक अप लगता है (7 साल बाद;) –

1

यह Python2.7 और Python3.x के लिए काम करता है:

io.StringIO(u'foo') 
संबंधित मुद्दे