質問: list(csv.reader(f)) print(v_data[0]) print(v_data_list[0]) ``` ``` AAA,BBB,CCC,AAA,BBB,CCC,AAA,BBB,CCC 111,222,333,444,555,666,777,888,999 AAA,BBB,CCC,AAA,BBB,CCC,AAA,BBB,CCC 111,222,333,444,555,666,777,888,999 ``` ### 試したこと for 文の前にv_data_listを配置したら,v_data_listにはcsvの値が格納されたが,v_dataには値が格納されず,先ほどと逆の結果になった. よろしくお願いします
回答: ファイルからデータを読み出した後に、もう一度読むには、`seek`関数を使って巻き戻してやる必要があります。 ファイルオブジェクトは、現在の読み出し場所を持っています。ファイルを開いた時点ではファイルの先頭にそのポイントがあります。ファイルからデータを読み出すと、呼んだ分だけそのポイントが後ろにずれていきます。 `v_data`に全部読み出した後はそのポイントは末尾にあるので、それ以上何も読み出すことができず、`v_data_list`は空になってしまいます。 `v_data_list`に読み出す前に`f.seek(0,0)`として、先頭にポイントを移動してやれば、読み出すことができるようになります。 詳細な使い方は、ドキュメントを参照ください。