2013-08-05 13 views
12

C'è un po 'di codice che mi dà problemi. Stava funzionando alla grande in un altro copione che avevo ma dovevo averlo incasinato in qualche modo.Python CSV non ha attributi 'Writer'

Il if csv: è principalmente perché mi sono basato su un'opzione -csv in un argparser. Ma anche se dovessi eseguirlo con i rientri appropriati all'esterno dello if statement, restituisce comunque lo stesso errore.

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

Mi dà:

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' 

Se rimuovo il if statement, ottengo:

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' 

Che cosa sciocca faccio di sbagliato? Ho provato a cambiare il nome del file in cose come test.py come ho visto in un altro post SO, non ha funzionato.

risposta

10

Se è stato impostato qualcosa che assegna a csv (sembra una stringa), si sta eseguendo l'ombreggiamento dell'importazione del modulo. Quindi, la cosa più semplice è quello di cambiare solo ciò che sta assegnando a csv che non è il modulo e chiamare qualcos'altro ...

In effetti ciò che sta accadendo è:

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

Rimuovere l'ulteriore incarico di csv e andare da lì ...

+0

Hai ragione, mi dispiace non averlo visto prima. Ho avuto un 'csv = args.csv' altrove nello script. Grazie mille!! Cambiando l'istruzione 'if 'a' if args.csv' e rimuovendo il precedente 'csv = args.csv' l'ha risolto. Eccellente. – Interrupt

30

Per me avevo chiamato il mio file csv.py. Quindi, quando I import csv da quel file stavo essenzialmente cercando di importare lo stesso file stesso.

+3

Haha ... sembra un errore comune..solo per me ... Mi stava facendo impazzire ... –

+0

stesso per me :-) –

+1

Oh uomo, grazie! – chwi

Problemi correlati