दिलचस्प पोस्ट
द्विआधारी खोज के साथ एक वेक्टर में निकटतम मान खोजें बूटस्ट्रैप 3 नेबबार संक्षिप्त करें LINQ में WHERE क्लॉज़ को गतिशील रूप से कैसे जोड़ या ऑपरेटर करना क्या XAML में कैनवास के बच्चों की संपत्ति बाँधना संभव है? हस्ताक्षरित / अहस्ताक्षरित तुलना जावास्क्रिप्ट में दो सरणियों और डी-डुप्लिकेट मदों को कैसे मर्ज करें इकाई फ़्रेमवर्क मेटाडेटा से डाटाबेस तालिका नाम प्राप्त करें जावास्क्रिप्ट बिना स्ट्रैटेबल के अंदर स्ट्रैटेबल – जैसे PHP जावास्क्रिप्ट के साथ iframe src बदल रहा है XDocument.Validate हमेशा सफल होता है सभी अन्य दृश्यों के ऊपर UIView जोड़ें, जिसमें स्थितिबारी शामिल है अगर वे स्थिर हो सकते हैं तो निजी सहायक विधियों को स्थिर होना चाहिए विनिर्देशन में दिनांक स्वरूप के कारण अमान्य gemspec Android में SQLite डेटाबेस बनाएँ MongoDB 3.0 में 'सॉकेट फ़ाइल अनलिंक करने में विफल' त्रुटि

पायथन के साथ फाइल में लिस्ट लिखना

क्या यह एक फ़ाइल में एक सूची लिखने का सबसे साफ तरीका है, चूंकि writelines() नई writelines() को शामिल नहीं करती हैं?

 file.writelines(["%s\n" % item for item in list]) 

ऐसा लगता है कि वहाँ एक मानक तरीका होगा …

Solutions Collecting From Web of "पायथन के साथ फाइल में लिस्ट लिखना"

संपादित करें थॉमस की टिप्पणी से जानकारी जोड़ना

फ़ाइल को पहले खोलने के लिए मत भूलना

thefile = open('test.txt', 'w')

मैं एक पाश का उपयोग करता हूं:

 for item in thelist: thefile.write("%s\n" % item) 

या:

 for item in thelist: print>>thefile, item 

यदि आप एक फ़ंक्शन कॉल के लिए उत्सुक हैं, तो कम से कम चौकोर ब्रैकेट्स [] हटा दें ताकि स्ट्रिंग्स को मुद्रित किया जा सके (एक लिंक्सएम्प की बजाय जीनिक्स) – सभी मेमोरी को लेने का कोई कारण नहीं तारों की पूरी सूची को अमल में लाया जाना आवश्यक है

आप फाइल के साथ क्या करने जा रहे हैं? क्या यह फ़ाइल इंसानों या स्पष्ट इंटरऑपरेबिलिटी आवश्यकताओं वाले अन्य कार्यक्रमों के लिए मौजूद है, या क्या आप एक ही अजगर ऐप द्वारा बाद में उपयोग के लिए डिस्क पर सूची को क्रमबद्ध करने का प्रयास कर रहे हैं। यदि दूसरा मामला यह है, तो आपको सूची को चुनना चाहिए।

 import pickle with open('outfile', 'wb') as fp: pickle.dump(itemlist, fp) 

इसे वापस पढ़ने के लिए:

 with open ('outfile', 'rb') as fp: itemlist = pickle.load(fp) 

सबसे अच्छा तरीका यह है:

 outfile.write("\n".join(itemlist)) 

फिर भी एक और रास्ता सरल json का उपयोग कर json के लिए सीरियल करें (अजगर 2.6 में शामिल है):

 >>> import simplejson >>> f = open('output.txt', 'w') >>> simplejson.dump([1,2,3,4], f) >>> f.close() 

यदि आप output.txt की जांच करते हैं:

[1, 2, 3, 4]

यह उपयोगी है क्योंकि वाक्यविन्यास अजगर है, यह मानव पठनीय है, और इसे अन्य भाषाओं में अन्य प्रोग्रामों में पढ़ा जा सकता है।

पायथन 3 और पायथन 2.6+ सिंटैक्स का उपयोग करना:

 with open(filepath, 'w') as file_handler: for item in the_list: file_handler.write("{}\n".format(item)) 

यह मंच-स्वतंत्र है यह एक नई लाइन के साथ अंतिम पंक्ति को भी समाप्त कर देता है, जो एक यूनिक्स सबसे अच्छा अभ्यास है ।

मैंने सोचा कि यह जीनक्सप का उपयोग करने के लाभों का पता लगाने में दिलचस्प होगा, इसलिए ये मेरा लेना है

प्रश्न में उदाहरण एक अस्थायी सूची बनाने के लिए वर्ग कोष्ठक का उपयोग करता है, और इसी प्रकार के समतुल्य है:

 file.writelines( list( "%s\n" % item for item in list ) ) 

जो कि बेतरतीब ढंग से सभी लाइनों की एक अस्थायी सूची तैयार करती है जो कि लिखी जाएंगी, यह आपकी सूची के आकार के आधार पर महत्वपूर्ण मात्रा में स्मृति का उपभोग कर सकता है और कैसे स्ट्रब str(item) का उत्पादन कैसे किया जाता है

स्क्वायर ब्रैकेट ड्रॉप करें list() उपर्युक्त रैपिंग list() कॉल को हटाने के बराबर) इसके बजाय file.writelines() को एक अस्थायी जनरेटर पास करें। 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 

(मैंने पायथन की अधिकतम वर्चुअल मेमरी को ~ 100 एमबी को 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 

(लिनक्स पर पायथन 2.6.2)

सामान्य रूप में

लेखन के लिए वाक्यविन्यास निम्नलिखित है () विधि

 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() 

संदर्भ

http://www.tutorialspoint.com/python/file_writelines.htm

अल्पविराम सेपपरेटेड मान के साथ टेक्स्ट फाइल में सूची को सीरियल करना

 mylist = dir() with open('filename.txt','w') as f: f.write( ','.join( mylist ) ) 
 file.write('\n'.join(list)) 
 with open ("test.txt","w")as fp: for line in list12: fp.write(line+"\n") 

यदि आप Python3 पर निम्नानुसार हैं, तो आप प्रिंट फ़ंक्शन का भी उपयोग कर सकते हैं।

 f = open("myfile.txt","wb") print(mylist, file=f) 

क्योंकि मैं आलसी हूँ ….

 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()) 

आप कोशिश क्यों नहीं करते

 file.write(str(list)) 

चलो सूची हो, तो:

 In [29]: a = n.array((avg)) In [31]: a.tofile('avgpoints.dat',sep='\n',dtype = '%f') 

आप अपनी आवश्यकता के आधार पर %e या %s उपयोग कर सकते हैं

 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 

यह कैसे काम करता है: सबसे पहले, अंतर्निहित खुले कार्य का उपयोग करके फाई खोलें और फाई के नाम को निर्दिष्ट करें और जिस मोड में हम फाई को खोलना चाहते हैं। मोड एक रीड मोड ('आर') हो सकता है, लेखन मोड ('डब्ल्यू') या एन्डेड मोड ('ए') हो सकता है। हम यह भी निर्दिष्ट कर सकते हैं कि क्या हम पाठ मोड ('टी') या बाइनरी मोड ('बी') में पढ़ रहे हैं, लिख रहे हैं या जोड़ते हैं। वास्तव में बहुत अधिक तरीके उपलब्ध हैं और मदद (खुली) आप उनके बारे में अधिक जानकारी देंगे। डिफ़ॉल्ट रूप से, ओपन () फाई को एक 'टेस्ट स्कैन' मानता है और इसे 'आर' मोड में खोलता है। हमारे उदाहरण में, हम पहले लेखन पाठ मोड में फाई को खोलते हैं और फाई ले में लिखने के लिए लिखने की विधि का इस्तेमाल करते हैं और फिर हम अंतिम रूप से बंद कर देते हैं।

ऊपर दिए गए उदाहरण स्वरूप सी एच। स्वप्रोच.कॉम द्वारा पुस्तक "ए बाइट ऑफ पायथन" से है