2016-10-13 8 views
-1

私は、入力ファイルの内容としてこれを使用する場合:はIndexError

1,3,5,7,9,11 

私はこのエラーが表示されます。

IndexError: li 

with open('fig.fig') as o: 
    n = 6 
    for i in range(1, 2*n, 2): 
     print(o.readlines()[i].replace(' ', '')) 

答えて

0

と間違って何もありません次のコード:

n = 6 
for i in range(1, 2*n, 2): 
    print <something>[i].replace(' ', '') 

問題はファイルのオープンまたは読み取りにあります(実際に開いていますか?線長さ?)。希望が役立ちます。

0

ファイルを開いて処理するときは、実際にファイル内にある行よりも多くの行を読み込まないように常に注意する必要があります。また、あなたはreadlinesへの繰り返しの呼び出しを行っていますが、これは非常に非効率的です。以下のような何か試してみてください:

with open('fig.fig') as o:  
    lines = o.readlines() 
    n=6 
    for i in range(1, min(len(o), n*2), 2): 
     print(lines[i].replace(' ', '')) 

をこれは、n * 2、またはいずれか小さい方のファイルの最大行数、まで、奇数ラインを読みます。また、ファイルが存在することを確認する必要があります(1つの方法は、os.path.isfile('fig.fig')を使用するか、すべてtryブロックでラップすることです)。