2013-08-05 27 views
12

私に問題を引き起こすコードが少しあります。それは私が持っていた別のスクリプトで素晴らしい仕事をしていたが、何とかそれを台無しにする必要があります。Python CSVには 'Writer'という属性はありません

if csv:主に私がargparserで-csvオプションを使用していたためです。しかし、私がif statementの外にある適切なインデントでこれを実行するとしても、それは同じエラーを返します。

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

は私を与える:私はif statementを削除した場合

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' 

、私が取得:

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' 

は私が間違っている愚かな何の事をやっていますか?私は別のSOのポストでそれが動作しなかったのを見たので、私はtest.pyのようなものにファイル名を変更しようとしました。

答えて

10

csv(文字列のように見える)に設定したものを設定した場合、モジュールのインポートをシャドーイングします。だから、最も単純なものは単なるモジュールではないことcsvに割り当てる何でも変更すると何か他のものにそれを呼び出すことです...

実際に何が起こっているかである:

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

csvにさらに割り当てを削除そこから行く...

+0

あなたはそうです、もっと早く見ないのは残念です。私はスクリプトのどこかに 'csv = args.csv'を持っていました。どうもありがとうございます!! 'if statement'を' if args.csv'に変更し、前の 'csv = args.csv'を削除して解決しました。優れた。 – Interrupt

30

私のために私のファイル名はcsv.pyだった。だから私はimport csvそのファイルから、私は本質的に同じファイル自体をインポートしようとしていた。

+3

ハハ...よくある間違いです...私と同じです...それは私を夢中にしていました... –

+0

私にとっても同じです:-) –

+1

ああ、ありがとう! – chwi

関連する問題