2016-04-20 5 views
2

Pythonの初心者ですので、大変助けになります。 CSVファイルからリストを作成しようとしていますが、空のリストが戻ってきます。コードは次のとおりです。読者のPythonリスト

f = open('f04.csv','r') 
fs = csv.reader(f) 

for row in fs: 
    print(row) 

print("\n create list:") 
rawlist = list(fs) 
print(rawlist) 

出力あなたは読者が動作しますが、私はそれが空を返すリストを作成しようとすると、見ることができるように

['0.161872459', '0.007599374', '0.356000303'] 
['0.252876406', '0.174271357', '0.186588529'] 
['0.002431561', '0.304828772', '0.413916445'] 
['0.317126652', '0.205842315', '0.007455314'] 
['0.035314146', '0.033238938', '0.037165931'] 
['0.701855497', '0.173086947', '0.040612888'] 
['0.576945162', '0.846018396', '0.046673223'] 
['0.170591115', '0.587155632', '0.177219448'] 
['0.83711092', '0.419058334', '0.829849144'] 

create list: 
[] 

です。前もって感謝します。

答えて

3

ファイルなどのイテレータは、1回だけ反復できます。最初から読み込みを再開できるようにするには、それらを再初期化する必要があります。試してみてください:

f = open('f04.csv','r') 
fs = csv.reader(f) 

rawlist = [] 
for row in fs: 
    print(row) 
    rawlist.append(row) 

print(rawlist) 
+0

作品:

あなたの例では、その後だけになって、コードのつの追加ラインが必要になります。 – BFC

1

ファイルを巻き戻すことなく、二回反復することはできない、とcsv.readerは全く二回反復することができないイテレータを返します。これは、限り、あなたのファイルが巨大ではありませんように動作します

with open('f04.csv') as f: # with syntax ensures that the file is closed right away 
    rawlist = list(csv.reader(f)) 

# from here on, `rawlist` contains everything you had in the file 

for row in rawlist: 
    print(row) 

print(rawlist) 

簡単で、「右」の方法は、あなたがメモリにファイル全体を読み込むことです。

2

イテレータは一度しか移動できません。しかしseek(ドキュメントhttps://docs.python.org/3/library/io.html#io.IOBase.seekを参照)を使用してリセットすることができます。ありがとう、

f = open('f04.csv','r') 
fs = csv.reader(f) 

for row in fs: 
    print(row) 

f.seek(0) 

print("\n create list:") 
rawlist = list(fs) 
print(rawlist) 
関連する問題