2013-08-05 22 views
12

Có một chút mã khiến tôi gặp rắc rối. Nó đã làm việc rất tốt trong một kịch bản khác mà tôi đã có nhưng tôi phải có sai lầm bằng cách nào đó.CSV của Python không có thuộc tính 'Writer'

if csv: chủ yếu là vì tôi đang dựa vào tùy chọn -csv trong một kẻ lập dị. Nhưng ngay cả khi tôi đã chạy điều này với thụt lề thích hợp bên ngoài if statement, nó vẫn trả về cùng một lỗi.

import csv 

if csv: 
    with open('output.csv', 'wb') as csvfile: 
     csvout = csv.writer(csvfile, delimiter=',', 
      quotechar=',', quoting=csv.QUOTE_MINIMAL) 
     csvout.writerow(['A', 'B', 'C']) 
     csvfile.close() 

Cung cấp cho tôi:

Traceback (most recent call last): 
    File "import csv.py", line 34, in <module> 
    csvout = csv.writer(csvfile, delimiter=',', 
AttributeError: 'str' object has no attribute 'writer' 

Nếu tôi loại bỏ các if statement, tôi nhận được:

Traceback (most recent call last): 
    File "C:\import csv.py", line 34, in <module> 
    csvout = csv.writer(csvfile, delimiter=',', 
AttributeError: 'NoneType' object has no attribute 'writer' 

Tôi đang làm gì điều ngớ ngẩn sai? Tôi đã thử thay đổi tên tệp thành những thứ như test.py như tôi thấy trong một bài đăng SO khác, không hoạt động.

Trả lời

10

Nếu bạn đã đặt thứ gì đó gán cho csv (trông giống như một chuỗi) thì bạn đang đổ bóng nhập khẩu mô-đun. Vì vậy, điều đơn giản nhất là chỉ cần thay đổi bất cứ điều gì ấy gán cho csv đó không phải là mô-đun và gọi nó là cái gì khác ...

Trong thực tế những gì đang xảy ra là:

import csv 
csv = 'bob' 
csvout = csv.writer(somefile) 

Hủy bỏ nhiệm vụ hơn nữa để csv và đi từ đó ...

+0

Bạn nói đúng, tôi rất tiếc vì không nhìn thấy nó sớm hơn. Tôi đã có một 'csv = args.csv' ở nơi khác trong kịch bản. Cảm ơn bạn rất nhiều!! Thay đổi 'if statement' thành' if args.csv' và xóa 'csv = args.csv' trước đó đã giải quyết nó. Xuất sắc. – Interrupt

30

Đối với tôi, tôi đã đặt tên tệp là csv.py. Vì vậy, khi tôi import csv từ tệp đó, tôi đã cố gắng nhập chính tệp đó.

+3

Haha ... có vẻ là một sai lầm phổ biến..đối với tôi ... Nó đã khiến tôi phát điên ... –

+0

tương tự cho tôi :-) –

+1

Oh man, thanks! – chwi

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