2012-03-14 9 views
14

は、だから私は、コピーされたと私は、Pythonを学ぶために使用しています帳からデモプログラムを貼り付け:CSVモジュールは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と命名されたという事実がそれを台無しにされたと思ったので、私はpurchases.pyと呼ばれる新しいファイルを始めたが、CSV

+2

また、インポート時に作成された可能性がある 'csv.pyc'ファイルを(もしあれば)削除してください。 – bernie

+0

:)ありがとう。ありがとう。 – Billjk

+0

同じエラーで同じエラーが発生しました –

答えて

3

を削除し忘れましたエラー:

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

そして、あなたが投稿コード:

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

あなたが使用していますか?いずれにしても

、2行目にそのインデントのエラーを修正:

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

をして、ファイルを開いて扱う残らないように、コンテキスト・ハンドラを使用してCSVリーダーオブジェクトを作成します。

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

ファイル名をcsv.pyにしないでください。
これを行うと、Pythonは標準ライブラリcsvモジュールの代わりにファイル内でcsvコードを探します。

+0

ああ、良いスポット – wim

+0

これは私のエラーを修正しました、ありがとう! – Drewdin

+5

私は同じエラーがありました。しかし、私はファイルの名前を変更した後、私は作業フォルダからcsv.pycを削除する必要がありました。 – Dam

関連する問題