writelines()
নতুন লাইনের চরিত্রগুলি sertোকানো না হওয়ায় এটি কি কোনও ফাইলের জন্য একটি লিস্ট লেখার সবচেয়ে পরিষ্কার উপায় ?
file.writelines(["%s\n" % item for item in list])
দেখে মনে হচ্ছে কোনও মানক উপায় থাকবে ...
writelines()
নতুন লাইনের চরিত্রগুলি sertোকানো না হওয়ায় এটি কি কোনও ফাইলের জন্য একটি লিস্ট লেখার সবচেয়ে পরিষ্কার উপায় ?
file.writelines(["%s\n" % item for item in list])
দেখে মনে হচ্ছে কোনও মানক উপায় থাকবে ...
উত্তর:
আপনি একটি লুপ ব্যবহার করতে পারেন:
with open('your_file.txt', 'w') as f:
for item in my_list:
f.write("%s\n" % item)
পাইথন 2 এ, আপনিও ব্যবহার করতে পারেন
with open('your_file.txt', 'w') as f:
for item in my_list:
print >> f, item
যদি আপনি একটি একক ফাংশন কলের বিষয়ে আগ্রহী হন, তবে কমপক্ষে স্কোয়ার বন্ধনীগুলি সরিয়ে ফেলুন []
, যাতে মুদ্রণযোগ্য স্ট্রিংগুলি একবারে তৈরি হয়ে যায় (তালিকার সংস্থার পরিবর্তে জিনপ এক্স) - প্রয়োজনীয় সমস্ত স্মৃতি গ্রহণের কারণ নেই স্ট্রিংয়ের পুরো তালিকাটি বাস্তবায়িত করতে।
thefile.write('\n'.join(thelist))
thefile.write(str(item) + "\n")
আপনি ফাইলটি কী করতে যাচ্ছেন? এই ফাইলটি কি মানুষের জন্য, বা অন্যান্য প্রোগ্রামগুলির জন্য স্পষ্ট আন্তঃআযোগাযোগ্যতার প্রয়োজনীয়তা রয়েছে?
আপনি ঠিক একই পাইথন অ্যাপ দ্বারা পরে ব্যবহার করার জন্য ডিস্কে একটি তালিকা ধারাবাহিকভাবে বের করার চেষ্টা হয়, আপনি হওয়া উচিত pickleing তালিকা।
import pickle
with open('outfile', 'wb') as fp:
pickle.dump(itemlist, fp)
এটি আবার পড়তে:
with open ('outfile', 'rb') as fp:
itemlist = pickle.load(fp)
open( "save.p", "wb" )
open( "save.p", "rb" )
with:
ব্লক পরবর্তী প্রতিবেদনটি বাইরে চালিয়ে যাওয়ার আগে ফাইল বন্ধ হয়ে যাবে with
ব্লক।
সহজ উপায় হ'ল:
with open("outfile", "w") as outfile:
outfile.write("\n".join(itemlist))
আপনি নিশ্চিত করতে পারেন যে আইটেম তালিকার সমস্ত আইটেম একটি জেনারেটর এক্সপ্রেশন ব্যবহার করে স্ট্রিং করছে:
with open("outfile", "w") as outfile:
outfile.write("\n".join(str(item) for item in itemlist))
মনে রাখবেন যে সমস্ত itemlist
তালিকা মেমরিতে থাকা দরকার, তাই মেমরির খরচ সম্পর্কে যত্ন নিন take
পাইথন 3 এবং পাইথন 2.6+ সিনট্যাক্স ব্যবহার করে :
with open(filepath, 'w') as file_handler:
for item in the_list:
file_handler.write("{}\n".format(item))
এটি প্ল্যাটফর্ম-স্বতন্ত্র। এটি একটি নতুন লাইন চরিত্রের সাথে চূড়ান্ত লাইনটিও সমাপ্ত করে, যা ইউনিক্স সেরা অনুশীলন ।
পাইথন 3.6 থেকে শুরু করে "{}\n".format(item)
প্রকাশ করা হয় f- স্ট্রিং দিয়ে প্রতিস্থাপিত করা যেতে পারে: f"{item}\n"
।
file_handler.write("\n".join(str(item) for item in the_list))
তবুও অন্য উপায়। ব্যবহার JSON করতে ধারাবাহিকভাবে simplejson (হিসেবে অন্তর্ভুক্ত JSON পাইথন 2.6 মধ্যে):
>>> import simplejson
>>> f = open('output.txt', 'w')
>>> simplejson.dump([1,2,3,4], f)
>>> f.close()
আপনি যদি আউটপুট.টেক্সট পরীক্ষা করেন:
[১, ২, ৩, ৪]
এটি দরকারী কারণ সিনট্যাক্সটি পাইথোনিক, এটি মানব পাঠযোগ্য এবং এটি অন্যান্য প্রোগ্রামগুলির দ্বারা অন্য প্রোগ্রামগুলি দ্বারা পড়া যেতে পারে।
আমি ভেবেছিলাম জেন এক্সপ ব্যবহারের সুবিধাগুলি অন্বেষণ করা আকর্ষণীয় হবে, তাই আমার গ্রহণযোগ্যতা এখানে।
প্রশ্নের উদাহরণটিতে অস্থায়ী তালিকা তৈরি করতে বর্গাকার বন্ধনী ব্যবহার করা হয় এবং এর সমতুল্য:
file.writelines( list( "%s\n" % item for item in list ) )
যা অনাবশ্যকভাবে সমস্ত রেখাগুলির অস্থায়ী তালিকা তৈরি করে যা লিখিত হবে, এটি আপনার তালিকার আকার এবং কী পরিমাণে আউটপুট হয় তার উপর নির্ভর করে উল্লেখযোগ্য পরিমাণে স্মৃতি গ্রহণ করতে পারে str(item)
।
বর্গাকার বন্ধনী ছাড়ুন (সমতুল্য মোড়ানো অপসারণ list()
পরিবর্তে একটি অস্থায়ী পাস হবে উপরে কল) জেনারেটর থেকে file.writelines()
:
file.writelines( "%s\n" % item for item in list )
এই জেনারেটরটি item
অন-চাহিদা অনুসারে আপনার অবজেক্টগুলির নিউলাইন-টার্মিনেটেড উপস্থাপনা তৈরি করবে (যেমন তারা লিখিত আছে)। এটি বেশ কয়েকটি কারণে চমৎকার:
str(item)
ধীর গতিতে থাকে তবে প্রতিটি আইটেমটি প্রক্রিয়াজাত হওয়ায় ফাইলটিতে দৃশ্যমান অগ্রগতি রয়েছেএটি মেমরির সমস্যাগুলি এড়িয়ে যায়, যেমন:
In [1]: import os
In [2]: f = file(os.devnull, "w")
In [3]: %timeit f.writelines( "%s\n" % item for item in xrange(2**20) )
1 loops, best of 3: 385 ms per loop
In [4]: %timeit f.writelines( ["%s\n" % item for item in xrange(2**20)] )
ERROR: Internal Python error in the inspect module.
Below is the traceback from this internal error.
Traceback (most recent call last):
...
MemoryError
(পাইথনের সর্বাধিক ভার্চুয়াল মেমরির সাথে ~ 100MB সীমাবদ্ধ করে আমি এই ত্রুটিটি ট্রিগার করেছি ulimit -v 102400
)।
একদিকে মেমরির ব্যবহার রাখা, এই পদ্ধতিটি আসলে আসলের চেয়ে কোনও দ্রুত নয়:
In [4]: %timeit f.writelines( "%s\n" % item for item in xrange(2**20) )
1 loops, best of 3: 370 ms per loop
In [5]: %timeit f.writelines( ["%s\n" % item for item in xrange(2**20)] )
1 loops, best of 3: 360 ms per loop
(লিনাক্সে পাইথন ২.6.২)
কারণ আমি অলস ....
import json
a = [1,2,3]
with open('test.txt', 'w') as f:
f.write(json.dumps(a))
#Now read the file back into a Python list object
with open('test.txt', 'r') as f:
a = json.loads(f.read())
with open ('Sp1.txt', 'a') as outfile:
json.dump (sp1_segments, outfile)
logger.info ("Saved sp_1 segments")
; সমস্যাটি হ'ল আমার প্রোগ্রামটি তিনবার চলছে এবং তিনটি রানের ফলাফল মশাল। 1-2 টি খালি লাইন যুক্ত করার কোনও উপায় কী যাতে প্রতিটি রান থেকে ফলাফলগুলি বোধগম্য হয়?
json.dump(sp1_segments + "\n\n", outfile)
?
রাইটলাইনগুলি () পদ্ধতির জন্য বাক্য গঠনটি নীচে দেওয়া হল
fileObject.writelines( sequence )
#!/usr/bin/python
# Open a file
fo = open("foo.txt", "rw+")
seq = ["This is 6th line\n", "This is 7th line"]
# Write sequence of lines at the end of the file.
line = fo.writelines( seq )
# Close opend file
fo.close()
file.write('\n'.join(list))
file
পরিবর্তনশীল কিভাবে পাবেন ?
আপনি পাইথন 3 এ থাকলে মুদ্রণ ফাংশনটিও ব্যবহার করতে পারেন।
f = open("myfile.txt","wb")
print(mylist, file=f)
এই যুক্তি প্রথমে তালিকার আইটেমগুলিতে রূপান্তর করবে string(str)
। কখনও কখনও তালিকার মতো একটি টুপল থাকে
alist = [(i12,tiger),
(113,lion)]
এই যুক্তি একটি নতুন লাইনে প্রতিটি tuple ফাইল করতে লিখতে হবে। eval
ফাইলটি পড়ার সময় আমরা প্রতিটি টিপল লোড করার সময় পরে ব্যবহার করতে পারি :
outfile = open('outfile.txt', 'w') # open a file in write mode
for item in list_to_persistence: # iterate over the list items
outfile.write(str(item) + '\n') # write to the file
outfile.close() # close the file
poem = '''\
Programming is fun
When the work is done
if you wanna make your work also fun:
use Python!
'''
f = open('poem.txt', 'w') # open for 'w'riting
f.write(poem) # write text to file
f.close() # close the file
এটি কীভাবে কাজ করে: প্রথমে বিল্ট-ইন ওপেন ফাংশনটি ব্যবহার করে এবং fi লে এবং মোডে আমরা open লে খুলতে চাই তার নাম উল্লেখ করে একটি openেল খুলুন। মোডটি একটি পঠন মোড ('r'), রাইট মোড ('ডাব্লু') বা অ্যাপেন্ড মোড ('এ') হতে পারে। আমরা পাঠ্য মোড ('টি') বা বাইনারি মোডে ('বি') পড়ছি, লিখছি বা সংযোজন করছি কিনা তাও আমরা উল্লেখ করতে পারি। আসলে আরও অনেকগুলি মোড উপলব্ধ রয়েছে এবং সহায়তা (খোলা) তাদের সম্পর্কে আপনাকে আরও বিশদ দেবে। ডিফল্টরূপে, ওপেন () fi le কে 't'ext fi le হিসাবে বিবেচনা করে এবং এটি' r'ead মোডে খোলে। আমাদের উদাহরণস্বরূপ, আমরা প্রথমে লিখিত পাঠ্য মোডে fi লে খুলি এবং fi লেতে লিখতে object লে অবজেক্টের লেখার পদ্ধতিটি ব্যবহার করি এবং তারপরে আমরা ally লে বন্ধ করব।
উপরোক্ত উদাহরণে বুক "পাইথন একটি বাইট" Swaroop সি এইচ দ্বারা থেকে swaroopch.com
writelines
এটি নতুন লাইনগুলিকে যুক্ত করে না কারণ এটি মিরর করেreadlines
, যা এগুলি সরিয়ে দেয় না।