そこで、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
。