###前提・実現したいこと
pythonで銘柄コードファイル(txt)を読み込み、impalaから各銘柄の株価データを得て、それをcsvファイルに書き込むということをしたいです。
###発生している問題・エラーメッセージ
得られた株価データを銘柄ごとにcsvファイルに書き込む段階で、if文でSyntaxError: invalid syntaxが生じるのですが、原因が不明です。
エラーメッセージ
if id == '9007': #リストに入れた結果をcsvファイルに書き込んでいく File "<stdin>", line 14 if id == '9007': #リストに入れた結果をcsvファイルに書き込んでいく ^ SyntaxError: invalid syntax >>> csvWriter1.writerow(listData) File "<stdin>", line 1 csvWriter1.writerow(listData) ^ IndentationError: unexpected indent >>> elif id == '9008': File "<stdin>", line 1 elif id == '9008': ^ IndentationError: unexpected indent >>> csvWriter2.writerow(listData) File "<stdin>", line 1 csvWriter2.writerow(listData) ^ IndentationError: unexpected indent >>> elif id == '9020': File "<stdin>", line 1 elif id == '9020': ^ IndentationError: unexpected indent >>> csvWriter3.writerow(listData) File "<stdin>", line 1 csvWriter3.writerow(listData) ^ IndentationError: unexpected indent >>> elif id == '9021': File "<stdin>", line 1 elif id == '9021': ^ IndentationError: unexpected indent >>> csvWriter4.writerow(listData) File "<stdin>", line 1 csvWriter4.writerow(listData) ^ IndentationError: unexpected indent >>> elif id == '9042': File "<stdin>", line 1 elif id == '9042': ^ IndentationError: unexpected indent >>> csvWriter5.writerow(listData) File "<stdin>", line 1 csvWriter5.writerow(listData) ^ IndentationError: unexpected indent >>> cur.fetchall() #全ての結果を返すexit() File "<stdin>", line 1 cur.fetchall() #全ての結果を返すexit() ^ IndentationError: unexpected indent
###該当のソースコード
pythonです。
import csv f = open('/home/user/bootcamp/StockCode.txt') #銘柄コードファイルを開く lines2 = f.readlines() # 1行毎にファイル終端まで全て読む(改行文字も含まれる) f.close() # lines2: リスト。要素は1行の文字列データ f1 = open('/home/user/bootcamp/data9007.csv', 'ab') #9007のデータを書き込むファイルを開く csvWriter1 = csv.writer(f1) f2 = open('/home/user/bootcamp/data9008.csv', 'ab') #9008のデータを書き込むファイルを開く csvWriter2 = csv.writer(f2) f3 = open('/home/user/bootcamp/data9020.csv', 'ab') #9020のデータを書き込むファイルを開く csvWriter3 = csv.writer(f3) f4 = open('/home/user/bootcamp/data9021.csv', 'ab') #9021のデータを書き込むファイルを開く csvWriter4 = csv.writer(f4) f5 = open('/home/user/bootcamp/data9042.csv', 'ab') #9042のデータを書き込むファイルを開く csvWriter5 = csv.writer(f5) titleData = ['stock_code', 'date_s', 'openning', 'high', 'low', 'closing', 'turnover', 'closing_adjusted', 'code_id'] #各ファイルに値のタイトルを入れる csvWriter1.writerow(titleData) csvWriter2.writerow(titleData) csvWriter3.writerow(titleData) csvWriter4.writerow(titleData) csvWriter5.writerow(titleData) for line in lines2: #銘柄コードを順次読み込む id = line.strip() from impala.dbapi import connect conn = connect(host='172.16.102.6', port=21050) #接続 cur = conn.cursor() cur.execute('use tse_d_yf') #テーブルの選択 for num in range(0,3): listData = [] #リストの初期化 date = 20150403 - num sql = 'SELECT * from sec1 where code_id = \'%s\' AND date_s = \'%s\' ' % (id, str(date)) cur.execute(sql) #select result = cur.fetchall() #結果を配列化 listData.append(['%s', '%s', '%d', '%d', '%d', '%d', '%f', '%d', '%s'] % (result[0][0], result[0][1], result[0][2], result[0][3], result[0][4], result[0][5], result[0][6], result[0][7], result[0][8]) #リストにデータを追加 if id == '9007': #リストに入れた結果をcsvファイルに書き込んでいく csvWriter1.writerow(listData) elif id == '9008': csvWriter2.writerow(listData) elif id == '9020': csvWriter3.writerow(listData) elif id == '9021': csvWriter4.writerow(listData) elif id == '9042': csvWriter5.writerow(listData) cur.fetchall() #全ての結果を返すexit()
###試したこと
コロンの全角or半角を確認したり、条件文の両辺の型をintにしたりstringにしたりしてみましたが、いずれも結果は変わりませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
回答1件
あなたの回答
tips
プレビュー