私は、Financial Data Quality Management Enterprise Edition(FDMEE)と呼ばれるOracle EPM製品を使用しています。データファイルを解析し、FDMEE製品スキーマ内のカスタムテーブルにプッシュするJythonスクリプトを作成しました。IndexError:インデックスが範囲外です。7
私は、データファイルのサブセットをプッシュしていたときにそれが正常に動作します。私は、全体のデータファイルを解析する場合でも、それはエラーはIndexErrorで失敗:範囲外のインデックス:7
後は、私はエラーメッセージです:後
File "\\vmhodvesip4\D$\SVESI7\Custom\FDMEEApps\BFRVN/data/scripts/event/BefImport.py", line 5, in <module>
if row[7]=='JAN':
IndexError: index out of range: 7
は、私が使用するコードです:
import csv
recReader = csv.reader(open('D:/SVESI7/Custom/FDMEEApps/BFRVN/inbox/BF_Reven_Load/Test03big.txt'), delimiter='!')
for row in recReader:
if row[7]=='JAN':
period_num = '1'
elif row[7]=='FEB':
period_num = '2'
elif row[7]=='MAR':
period_num = '3'
elif row[7]=='APR':
period_num = 4
elif row[7]=='MAY':
period_num = 5
elif row[7]=='JUN':
period_num = 6
elif row[7]=='JUL':
period_num = 7
elif row[7]=='AUG':
period_num = 8
elif row[7]=='SEP':
period_num = 9
elif row[7]=='OCT':
period_num = 10
elif row[7]=='NOV':
period_num = 11
elif row[7]=='DEC':
period_num = 12
else:
period_num = 'skip'
if period_num != 'skip':
params1 = ['batch_plnapps_oi',row[7],period_num,'20' + row[1][-2:],row[2], row[3], row[4], row[5], row[6], row[8], row[9], row[10], row[11], round(row[12],12)]
ins_stmt1 = "insert into aif_open_interface(batch_name,period,period_num,year,col03,col04,col05,col06,col07,col09,col10,col11,col12,amount) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
fdmAPI.executeDML(ins_stmt1,params1,False)
fdmAPI.commitTransaction()
このエラーは、リストの8番目の要素を持っていない報告します。ボーナスとして
は、ここにコードを書くためのより効率的な方法です。予想される出力は何ですか?これをチェックして、トレースバックを試みます。 –
また、Pandasのドキュメント[here](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html)を読んで、データフレームを扱うので、この目的にはるかに優れています。 –
あなたのコードを見る時間はあまりありませんでしたが、csvモジュールのDict_Readerを使用して、インデックスではなくカラム名でそのカラムを見ることをお勧めします。代わりにこれを試してみてください。実際に問題を知らなくても解決策が見つかるかもしれません。 – Connor