পাইথনের কোনও ফাইলকে আমি কীভাবে একটি স্ট্রিং গুটিয়ে রাখতে পারি?


উত্তর:


124

পাইথন ২.x এর জন্য স্ট্রিংআইও মডিউলটি ব্যবহার করুন । উদাহরণ স্বরূপ:

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

আমি সিস্ট্রিংআইও (যা দ্রুত) ব্যবহার করি তবে নোট করুন যে এটি ইউনিকোড স্ট্রিংকে গ্রহণ করে না যা প্লেইন ASCII স্ট্রিং হিসাবে এনকোড করা যায় না । (আপনি "সিস্ট্রিংআইও" থেকে "স্ট্রিংআইও থেকে" পরিবর্তন করে স্ট্রিংআইওতে যেতে পারেন))

পাইথন ৩.x এর জন্য ioমডিউলটি ব্যবহার করুন ।

f = io.StringIO('foo')

4
সিস্ট্রিংআইও ব্যবহার করার এখন একটি কারণ রয়েছে: সিস্ট্রিংআইও ইউনিকোড স্ট্রিং সমর্থন করে না।
আর্মিন রোনাচার

6
আমি মনে করি আরও ভাল ধারণা হ'ল 'স্ট্রিংআইও হিসাবে আমদানি সিস্ট্রিংআইও' করা। যদি কোনও কারণে আপনাকে খাঁটি অজগর বাস্তবায়নে যেতে হয় তবে আপনাকে কেবল একটি লাইন পরিবর্তন করতে হবে ..
জন ফোহী

এটি পাইথন 2.7 এর জন্যও কাজ করে: io.StringIO(u'foo')আমি এটি ব্যবহার করব
গেটলি

29

পাইথন 3.0 এ:

import io

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

4
@ এ বি বি গৃহীত উত্তর ইতিমধ্যে ইতিমধ্যে এর ব্যবহার দেখায়। আমার উত্তর পরিপূরক: এটি withস্টেটমেন্ট এবং লিখন, মুদ্রণ, সন্ধান এবং পড়ার পদ্ধতিগুলি প্রদর্শন করে।
jfs

7

এটি পাইথন 2.7 এবং পাইথন 3.x এর জন্য কাজ করে:

io.StringIO(u'foo')

5

যদি আপনার ফাইল-জাতীয় অবজেক্টটি বাইট ধারণ করে বলে মনে করা হয় তবে স্ট্রিংটি প্রথমে বাইট হিসাবে এনকোড করা উচিত এবং তার পরিবর্তে একটি বাইটসআইও অবজেক্ট ব্যবহার করা যেতে পারে। পাইথন 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')))

2

দুটি ভাল উত্তর। আমি একটি সামান্য কৌশল যুক্ত করব - যদি আপনার একটি সত্যিকারের ফাইল অবজেক্টের প্রয়োজন হয় (কিছু পদ্ধতি কেবল একটি ইন্টারফেস নয়, একটি প্রত্যাশা করে) তবে অ্যাডাপ্টার তৈরির উপায় এখানে রয়েছে:


"পৃষ্ঠা পাওয়া যায় নি" - rfk.id.au/software/projects/filelike/api/filelike.htm
jfs

4
এখনই ফিরে আসবে বলে মনে হচ্ছে (7 বছর পরে;)
ইথান ফুরম্যান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.