2010-11-16 19 views
5

आईटीईआर समारोह उदाहरण देता python docs पर:पायथन के उदाहरण मुझे लेखन त्रुटि

Traceback (most recent call last): 
    File "<stdin>", line 2, in <module> 
TypeError: 'builtin_function_or_method' object is not iterable 

कैसे है कि संभव:

with open("mydata.txt") as fp: 
    for line in iter(fp.readline): 
     print line 

मुझे इस देता है? (पायथन 2.6.4)

उत्तर

4

यह क्योंकि मैं मूर्ख हूँ और नहीं पढ़ सकते है:

एक दूसरा तर्क के बिना, ओ एक संग्रह वस्तु जो यात्रा प्रोटोकॉल ( आईटीईआर() विधि) का समर्थन करता है होना चाहिए, या यह अनुक्रम प्रोटोकॉल का समर्थन करना चाहिए (getitem() विधि 0 से शुरू होने वाले पूर्णांक तर्कों के साथ)। यदि यह उन प्रोटोकॉल में से किसी एक का समर्थन नहीं करता है, तो TypeError उठाया गया है।

समाधान एक खाली स्ट्रिंग सेंटीनेल प्रदान करना है।

with open("mydata.txt") as fp: 
    for line in iter(fp.readline, ''): 
     print line 
+1

+1: हालांकि, मैं * बेवकूफ * शब्द का उपयोग नहीं करता था। :) बीटीडब्लू, अगर आप अपनी खुद की समस्या हल करते हैं, तो अभी भी बाईं ओर टिक का उपयोग करके सही उत्तर (अपना खुद का) स्वीकार करने के लिए प्रोत्साहित किया जाता है। –

+0

किसने इसे कम किया? कृपया समझाएँ। –

+0

Space_C0wb0y, मैंने कोशिश की: "आप 2 दिनों में अपना जवाब स्वीकार कर सकते हैं"। –

-2

एकमात्र चीज जो मैं सोच सकता हूं वह यह है कि आपके पास mydata.txt नामक फ़ाइल नहीं है या यह गलत जगह पर है।

+0

यह स्पष्ट रूप से पहले से ही फ़ाइल को खोलने में कामयाब रहा है - त्रुटि पंक्ति 2 पर है, नहीं लाइन 1, और कह रहा है यह iterable नहीं है, नहीं है कि यह खुला नहीं है । –

2

अजगर file वस्तुओं iterable हैं, इसलिए स्पष्ट रूप से iter() कॉल करने के लिए कोई जरूरत नहीं है। लाइन द्वारा एक फ़ाइल लाइन पढ़ने के लिए आप बस लिख सकते हैं:

with open("mydata.txt") as fp: 
    for line in fp: 
     print line 
+0

यह ओपी की समस्या का समाधान नहीं है। –

+0

Space_C0wb0y, हालांकि यह मेरे वास्तविक प्रश्न का समाधान नहीं है, लेकिन अब से, मैं शायद कभी भी इसका उपयोग नहीं करूंगा + readline संयोजन धन्यवाद Tendayi :) –

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