私はCSVを受け取り処理します。私はCSVファイルの行を数えて、最後まで確実に行おうとしています。UnboundLocalError:割り当て前にローカル変数 'document'が参照されています
def parse_campaigns_cutsheet(country_code, input_file, DB, DB_hist, zip_id):
filecontent = urllib2.urlopen(input_file)
count = 0
csvFile = csv.DictReader(filecontent)
rowage = len(list(csvFile))
for row in csvFile:
count += 1
if 'MM' not in row['Tier']:
continue
if RB_COUNTRIES_new[country_code]['cut_sheet_country'] != row['Country']:
continue
document = DB.find_one({'rb_account_id': RB_COUNTRIES_new[country_code]['rb_account_id']})
if document is None:
continue
DB.save(document)
report_work(document, DB, DB_hist)
次のエラーUnboundLocalError: local variable 'document' referenced before assignment
が引き続き発生します。もし私がrowage = len(list(csvFile))
行を削除すればうまく動作しますか?
'csvFile'はジェネレータですが、' list(csvFile) 'によってジェネレータが使い果たされました。したがって、行 'rowage = len(list(csvFile))'が存在する場合、forループは入力されません。 forループが入力されない場合、 'document'は定義されません。したがって、あなたのエラー – user2829759