पायथन न्यूबी सीएसवी मॉड्यूल के साथ थोड़ी निराश हो रही है। इस दर पर, अगर मैंने फ़ाइल पार्सर को स्वयं लिखा था तो यह आसान होगा, लेकिन मैं चीजों को पाइथोनिक तरीके से करना चाहता हूं ....CSVWriter फ़ाइल को डेटा सहेज नहीं रहा - क्यों?
मैंने एक छोटी पायथन लिपि लिखी है जो मेरे डेटा को एक CSV फ़ाइल में सहेजना चाहिए ।
यहाँ मेरी कोड का एक टुकड़ा है:
import csv
wrtr = csv.writer(open('myfile.csv','wb'),delimiter=',', quotechar='"')
for row in rows:
wrtr.writerow([row.field1,row.field2,row.field3])
फ़ाइल myfile.csv सफलतापूर्वक बनाया गया है, अभी तक यह खाली है - लेकिन अभी भी रूप में अपनी अजगर प्रक्रिया द्वारा किया जा रहा है, उस पर एक ताला है। ऐसा लगता है कि डेटा को स्मृति में फ़ाइल में लिखा गया है, लेकिन यह अभी तक डिस्क पर नहीं पहुंचा है।
चूंकि पाइथन प्रक्रिया फ़ाइल पर लॉक रख रही है, तो मुझे लगता है कि मैं लॉक जारी करने के लिए ज़िम्मेदार हूं। यहाँ मेरी प्रश्न हैं:
- मैं कैसे अजगर डिस्क पर फ्लश करने के लिए
- मैं फ़ाइल कि csv.writer() विधि में खोला गया था कैसे बंद कर सकता मिलता है?
"" अगर मैं फ़ाइल पार्सर खुद को लिखता हूं तो यह आसान होगा "-" मैं इसे "प्रसिद्ध अंतिम शब्द" के तहत फाइल करूंगा। –
मुख्य अंतर्ज्ञान यह है कि सीएसवी लेखक को लिखने के बाद फ़ाइल हैंडल अभी भी खुला है। यदि आप बाहर 'ओपन' कॉल को हटाते हैं और एक अलग फ़ाइल हैंडल को बनाए रखते हैं जिसे आप csv.writer (csvfile, ...) में पास करते हैं, तो जब आप पूरा कर लेंगे तो आप उस फ़ाइल हैंडल को बंद कर सकते हैं और यह फ्लश होगा। टिम द्वारा प्रदान किया गया उत्तर यह करने के कुछ अच्छे तरीके बताता है। – mindthief
csvwriter में फ्लश विधि अनुपलब्ध है, यह एक निरीक्षण है। –