2012-03-14 17 views
14

Vì vậy, tôi sao chép và dán một chương trình demo từ cuốn sách tôi đang sử dụng để tìm hiểu Python:CSV Mô-đun 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]) 

Và tôi nhận được Lỗi:

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' 

Tại sao điều này xảy ra? Làm thế nào để tôi sửa chữa nó? Cập nhật: sửa tất cả lỗi Bây giờ tôi nhận được:

Traceback (most recent call last): 
    File "purchases.py", line 6, in <module> 
    for row in r: 
_csv.Error: line contains NULL byte 

gì đang xảy ra trong điều khoản của CSV.py: Tôi có một tập tin với mã tên cùng csv.py , được lưu trong cùng một thư mục. Tôi nghĩ rằng thực tế rằng nó đã được đặt tên csv .py đã vặn nó lên, vì vậy tôi bắt đầu một tập tin mới gọi là purchas.py, nhưng quên để xóa csv

+2

cũng đảm bảo bạn xóa (nếu có) bất kỳ tệp 'csv.pyc' nào có thể đã được tạo khi nhập – bernie

+0

Tôi đã làm :) Cảm ơn. – Billjk

+0

Đã có lỗi tương tự, vì lý do tương tự –

Trả lời

3

Có sự khác biệt giữa mã trong truy xuất của bạn lỗi:

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

Và mã bạn được đăng:

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

Vì vậy mà bạn đang sử dụng?

Dù sao đi nữa, khắc phục điều đó lỗi thụt đầu dòng trong dòng 2:

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

Và tạo csv đọc đối tượng của bạn với một handler bối cảnh, như vậy là không để tệp xử lý mở:

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

Đừng đặt tên tệp của bạn csv.py.
Khi bạn thực hiện, Python sẽ tìm trong tệp của bạn cho mã csv thay vì mô-đun chuẩn csv.

+0

ah, tốt đốm – wim

+0

này cố định lỗi của tôi, cảm ơn! – Drewdin

+5

Tôi đã gặp lỗi tương tự. Nhưng sau khi tôi thay đổi tên của tập tin tôi đã phải loại bỏ các csv.pyc từ thư mục làm việc. – Dam

Các vấn đề liên quan