Python CSV模块属性错误

Python CSV模块属性错误,python,csv,Python,Csv,因此,我复制并粘贴了我用来学习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]: p

因此,我复制并粘贴了我用来学习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'
回溯(最近一次呼叫最后一次):
文件“purchases.py”,第2行,在
导入csv
文件“/Users/Solomon/Desktop/Python/csv.py”,第5行,在
r=csv.read(打开('purchases.csv'))
AttributeError:“模块”对象没有属性“读取”
为什么会这样?我怎么修理它? 更新: 修正了所有的错误 现在我得到:

Traceback (most recent call last):
  File "purchases.py", line 6, in <module>
    for row in r:
_csv.Error: line contains NULL byte
回溯(最近一次呼叫最后一次):
文件“purchases.py”,第6行,在
对于r中的行:
_错误:行包含空字节
就CSV.py而言发生了什么:
我有一个名为csv.py的代码相同的文件,保存在同一个目录中。我认为它名为csv.py的事实把它搞砸了,所以我启动了一个名为purchases.py的新文件,但忘了删除csv

错误回溯中的代码之间存在差异:

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)

不要为文件命名
csv.py


当您这样做时,Python将在您的文件中查找
csv
代码,而不是标准库
csv
模块。

还要确保删除(如果存在)导入时创建的任何
csv.pyc
文件,原因相同,原因相同。但是在我更改了文件名之后,我不得不从工作文件夹中删除csv.pyc。