2013-08-05 13 views
12

Jest trochę kodu, który sprawia mi kłopot. Świetnie spisał się w innym scenariuszu, który miałem, ale musiałem go jakoś zepsuć.Python CSV nie ma atrybutu "Writer"

The if csv: przede wszystkim dlatego, że polegałem na opcji -csv w argparserze. Ale nawet jeśli miałbym uruchomić to z odpowiednimi wcięciami poza if statement, nadal zwraca ten sam błąd.

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() 

daje mi:

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' 

jeśli usunąć if statement, otrzymuję:

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' 

Co głupie rzeczy robię źle? Próbowałem zmienić nazwę pliku na rzeczy takie jak test.py, ponieważ widziałem, że w innym wpisie SO nie działa.

Odpowiedz

10

Jeśli ustawiłeś coś, co przypisuje do csv (wygląda jak ciąg), to śledzisz import modułu. Więc najprostszą rzeczą jest to, aby po prostu zmienić cokolwiek jest przypisanie csv że nie jest to moduł i nazywają to coś innego ...

W efekcie, co się dzieje jest:

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

Usuń dalszy przydział do csv i stamtąd ...

+0

Masz rację, przepraszam, że nie widziałem tego wcześniej. Miałem 'csv = args.csv' gdzie indziej w skrypcie. Dziękuję bardzo!! Zmiana 'if instrukcji' na' if args.csv' i usunięcie poprzedniego 'csv = args.csv' rozwiązało problem. Doskonały. – Interrupt

30

Dla mnie nazwałem mój plik csv.py. Więc kiedy I import csv z tego pliku zasadniczo próbowałem zaimportować ten sam plik.

+3

Haha ... wydaje się częstym błędem ... to dla mnie ... To doprowadzało mnie do szału ... –

+0

samo dla mnie też :-) –

+1

Och, człowieku, dzięki! – chwi

Powiązane problemy