Ответ 1
Не указывайте свой файл csv.py
.
Когда вы это сделаете, Python будет искать в вашем файле код csv
вместо стандартного модуля библиотеки 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]:
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, закрутил его, поэтому я начал новый файл с именем purchase.py, но забыл удалить csv
Не указывайте свой файл csv.py
.
Когда вы это сделаете, Python будет искать в вашем файле код csv
вместо стандартного модуля библиотеки 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)