2010-10-14 7 views
22

पायथन में,पायथन में, हमें रीडलाइन() की आवश्यकता क्यों होती है जब हम फ़ाइल संभाल पर फिर से सक्रिय हो सकते हैं?

fh = open('file.txt') 

के बाद लाइनों पर पुनरावृत्त करने के लिए निम्न कार्य हो सकता है:

for l in fh: 
    pass 

फिर हमारे पास fh.readlines() क्यों है?

+0

सीखने की वक्र? दूसरे शब्दों में, इतनी पाइथोनस्क वाली भाषाओं से संक्रमण? – KevinDTimm

उत्तर

17

मैं कल्पना करता हूं कि यह पहले से ही फाइलें थीं और इसे पीछे की संगतता के लिए बनाए रखा गया था। यहां तक ​​कि एक लाइनर के लिए, यह पूरी तरह से list(fh) के रूप में काफी अनावश्यक रूप से एक और अधिक सहज तरीके से वही काम करेगा। यही कारण है कि यह भी आप set(fh), tuple(fh) करने के लिए आजाद, आदि

देखें gnibbler's answer देता है।

+0

+1 'collection_constructor (fh) 'पर अच्छा बिंदु। मुझे स्वीकार करना होगा, यह कभी मेरे लिए नहीं हुआ। – delnan

+0

जब मैं पायथन के साथ शुरुआत कर रहा था, तो मुझे लगता था कि यह अनावश्यक था इससे पहले कि मैं 'सूची (एफएच)' करता था। क्या आप वाकई पिछड़े संगतता के लिए हैं? मेरा मतलब है कि उन्होंने पाइथन 3 के साथ बहुत कुछ तोड़ दिया, तो इसे भी साफ क्यों न करें! –

+0

@ आशीष, उन्होंने वास्तव में इतना तोड़ नहीं दिया और मुझे यकीन नहीं है कि यह पिछड़ा संगतता के लिए है। मैंने प्रोग्रामिंग पायथन शुरू किया जब 2.6 काफी बिल्कुल नया नहीं था इसलिए मैं नोब का कुछ हूं। उदाहरण के लिए मैंने 2.5 के लिए कोड भी कभी नहीं लिखा है, इसलिए मुझे इतिहास बिल्कुल नहीं पता है। – aaronasterling

1

readlines() लाइनों की एक सूची देता है, जो आप चाहें यदि आप प्रत्येक पंक्ति के माध्यम से पुनरावृत्ति करने की योजना नहीं बनाते हैं।

+2

'सूची (एफएच)' वही करेगी। –

+0

@ आशीष: 'रीडलाइन ([आकार])' वैकल्पिक तर्क लेता है। – MattH

+1

@MattH, ध्यान दें कि आकार एक संकेत है, और अधिक या कम लाइनों को वापस किया जा सकता है –

16

अधिकतर यह पिछड़ा संगतता के लिए है। फाइल ऑब्जेक्ट्स इयरिएबल

आकार तर्क के साथ रीडलाइन का उपयोग करना फाइलों से पढ़ने के सबसे तेज़ तरीकों में से एक है क्योंकि यह एक हिट में डेटा का एक गुच्छा पढ़ता है, लेकिन इसके लिए मेमोरी आवंटित करने की आवश्यकता नहीं है पूरी फाइल एक बार में

संबंधित मुद्दे

 संबंधित मुद्दे