スクリプトでcsv.reader()を何度か使用する必要があるスクリプトを作成しています。私はスクリプトの初期段階でそれを使って、sqlite3テーブルに初期の主キーデータを設定します。私はその後、csvに含まれているものに基づいてテーブルのデータを変更するために、後で再度使用します(この注文の正当な理由があると私は約束します)。Pythonのpythonのcsv.readerが実際にデータを取得していないようです
問題は2回目に発生します - 私のsqlite3テーブルは、最初のcsvリーダーではっきりと読み込まれます。つまり、最初のcsv.reader()はデータがどこから来るかで動作します。しかし、後でそれを繰り返すと、データはありません。 csv.reader()が完全に空であるように見えます。
csv.reader()はスクリプトごとに1つのcsv.reader()オブジェクトのみを許可しますか?私はそれが状況であるとは想像できません。ここで
は動作するコードです。(初期データと私のテーブルを移入)
for file in files:
f = open(file)
csv_f = csv.reader(f)
count = 0
for row in csv_f:
#more code
f.close()
ここで同じスクリプトの後半でないコードです:
for file in files:
print "opening file ", file
f = open(file)
csv_n = csv.reader(f)
count = 0
thisList = list(csv_n)
キャストタイプは、リストは驚くべきことではない、そうですか?私は真剣にこの問題を解決する方法を失っています。
ファイルを複数回開くか、 'f'ハンドルを再利用しますか?なぜなら、ファイルの最後にいると、なぜ2回目に失敗するのか不思議ではないからです。 –
初めてファイルを開いた後でファイルを閉じましたか?最初にテーブルに値を設定した後に 'f.close()'を使用してください。また、 'with'ステートメントを使用すると、そのようなエラーからあなたを救うことができます。 –
私はfハンドルを再利用しますが、毎回ファイルを閉じました。最初の反復の終わりに、私はファイルを閉じます。この例を更新してそれを表示します。それが問題ではないことを確認するために、ハンドルの名前を変更しました。まだ問題は残っています。 – dmcoding