2012-03-14 13 views
14

तो मैं नकल की और पुस्तक मैं अजगर जानने के लिए उपयोग कर रहा हूँ से एक डेमो कार्यक्रम चिपकाया:सीएसवी मॉड्यूल AttributeError

#!/usr/bin/env python 
    import csv 
total = 0 
priciest = ('',0,0,0) 
r = csv.reader(open('purchases.csv')) 
for row in r: 
    cost = float(row[1]) * float(row[2]) 
    total += cost 
    if cost == priciest[3]: 
     priciest = row + [cost] 
print("You spent", total) 
print("Your priciest purchase was", priciest[1], priciest[0], "at a total cost of", priciest[3]) 

और मैं त्रुटि मिलती है:

Traceback (most recent call last): 
     File "purchases.py", line 2, in <module> 
     import csv 
     File "/Users/Solomon/Desktop/Python/csv.py", line 5, in <module> 
     r = csv.read(open('purchases.csv')) 
AttributeError: 'module' object has no attribute 'read' 

हो रहा क्यों है? मैं इसे कैसे ठीक करूं? अद्यतन: फिक्स्ड सभी त्रुटियाँ अब मैं हो रही है:

Traceback (most recent call last): 
    File "purchases.py", line 6, in <module> 
    for row in r: 
_csv.Error: line contains NULL byte 

क्या CSV.py के मामले में हो रहा था: मैं एक ही कोड नामित csv.py के साथ एक फ़ाइल था , एक ही निर्देशिका में सहेजा गया। मैंने सोचा था कि तथ्य यह है कि इसे csv .py नाम दिया गया था, इसे खराब कर रहा था, इसलिए मैंने buyases.py नामक एक नई फ़ाइल शुरू की, लेकिन सीएसवी

+2

यह भी सुनिश्चित करता है कि आप किसी भी 'csv.pyc' फ़ाइल को हटाएं (अगर मौजूद है) जो आयात – bernie

+0

पर बनाया गया हो :) धन्यवाद। – Billjk

+0

एक ही त्रुटि के लिए, उसी कारण से –

उत्तर

3

को हटाने के लिए भूल गया है आपके ट्रेसबैक में कोड के बीच एक विसंगति है त्रुटि:

r = csv.read(open('purchases.csv')) 

और कोड आप पोस्ट:

r = csv.reader(open('purchases.csv')) 

तो जो आप उपयोग कर रहे हैं? ,

#!/usr/bin/env python 
import csv 
total = 0 

और एक संदर्भ हैंडलर के साथ अपने csv पाठक वस्तु बनाने इतनी के रूप में फ़ाइल खुला संभाल छोड़ने के लिए नहीं:

किसी भी दर पर, पंक्ति 2 में है कि खरोज त्रुटि को ठीक

with open('purchases.csv') as f: 
    r = csv.reader(f) 
71

अपनी फ़ाइल csv.py नाम न दें।
जब आप करते हैं, तो पाइथन मानक पुस्तकालय csv मॉड्यूल के बजाय csv कोड के लिए आपकी फ़ाइल में दिखेगा।

+0

आह, अच्छी स्पॉटिंग – wim

+0

यह मेरी त्रुटि ठीक है, धन्यवाद! – Drewdin

+5

मुझे एक ही त्रुटि थी। लेकिन जब मैंने फ़ाइल का नाम बदल दिया तो मुझे काम करने वाले फ़ोल्डर से csv.pyc को हटाना पड़ा। – Dam

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