CSV モジュール AttributeError 質問する

CSV モジュール AttributeError 質問する

そこで、Python を学習するために使用している本からデモ プログラムをコピーして貼り付けました。

#!/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 を削除するのを忘れていました。

ベストアンサー1

ファイルに という名前を付けないでくださいcsv.py
そうすると、Python はcsv標準ライブラリcsvモジュールではなく、ファイル内のコードを検索します。

編集: コメントに重要な注意事項を含めます:csv.pycそのディレクトリにファイルが残っている場合は、それを削除する必要があります。これは、ファイルを再実行する代わりに使用される Python バイトコードですcsv.py

おすすめ記事