此代码中的IndexError

时间:2016-10-13 12:23:15

标签: python indexing file-access

当我使用它作为输入文件的内容时:

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(' ', ''))

2 个答案:

答案 0 :(得分:0)

以下代码没有任何问题:

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

所以问题在于打开或读取你的文件(真正打开?行长?)。希望有所帮助。

答案 1 :(得分: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,或文件中的最大行数,以较小者为准。您还应检查该文件是否存在(一种方法是使用os.path.isfile('fig.fig'),或将所有内容包装在try块中。