2010-08-22 14 views
8

पायथन 2 में, फाइल ऑब्जेक्ट्स में एक xreadlines() विधि थी जो एक पुनरावर्तक लौटाती है जो फ़ाइल को एक समय में एक पंक्ति को पढ़ेगी। पायथन 3 में, xreadlines() विधि अब मौजूद नहीं है, और realines() अभी भी एक सूची देता है (एक पुनरावर्तक नहीं)। क्या पाइथन 3 में xreadlines() के समान कुछ है?पायथन 3 में xreadlines() का विकल्प क्या है?

मैं जानता हूँ कि मैं

for line in f: 
बजाय

for line in f.xreadlines(): 

कर सकते हैं लेकिन मैं यह भी पाश के लिए एक बिना xreadlines() का उपयोग करना चाहते हैं:

print(f.xreadlines()[7]) #read lines 0 to 7 and prints line 7 
+1

आप * नहीं कर सकते हैं * पुनरावर्तक सूचकांक। 'ज़िप ([1,2,3], [4,5,6]) [0]' -> त्रुटि। – kennytm

+0

@ केनीटीएम आपका सही है। मैंने अपने हिस्से को हटा दिया "आप एक पुनरावर्तक सूचकांक कर सकते हैं"। मैंने सोचा कि मैं एक इटरेटर को इंडेक्स कर सकता हूं क्योंकि मैं रेंज (10) [7] कर सकता हूं, लेकिन इसका मतलब यह नहीं है कि मैं एक इटरेटर को इंडेक्स कर सकता हूं। धन्यवाद। – snakile

उत्तर

12

फ़ाइल वस्तु खुद पहले से ही एक पुनरावृत्त है।

>>> f = open('1.txt') 
>>> f 
<_io.TextIOWrapper name='1.txt' encoding='UTF-8'> 
>>> next(f) 
'1,B,-0.0522642316338,0.997268450092\n' 
>>> next(f) 
'2,B,-0.081127897359,2.05114559572\n' 

Use itertools.islice एक iterable से एक मनमाना तत्व प्राप्त करने के लिए।

>>> f.seek(0) 
0 
>>> next(islice(f, 7, None)) 
'8,A,-0.0518101108474,12.094341554\n' 
1

यह कैसे (जनरेटर अभिव्यक्ति) के बारे में:

>>> f = open("r2h_jvs") 
>>> h = (x for x in f) 
>>> type(h) 
<type 'generator'>` 
संबंधित मुद्दे