从文件中读取特定列

时间:2016-08-06 10:00:35

标签: python string list python-2.7 numpy

我在读取模拟代码的大(300008行)输出文件时遇到问题。我正在使用此函数来读取文件的两列

def read2(filename,i1,i2):      
    "Read 2 ARRAYS from the i1-th and i2-th columns of a text file"  
    from numpy import *    # import numpy package    
    f = open(filename,'r')   # open the file      
    n = len(f.readlines())   # get number of rows    
    L1= [] ; L2=[]           # create empty lists                                
    f.seek(0)                # go to beginning of file     
    for k in range(n):         
        s = f.readline()     # read current row in string format         
        e =  s.split()        # split the elements of the string between white spaces   
        if "#" not in e[0]:         
           L1.append( e[i1-1] )         
           L2.append( e[i2-1] )     
    f.close()                # close input file     
    A1 = convert(L1,i1)     
    A2 = convert(L2,i2)     
    return A1,A2             # return arrays A1 & A2 to __main__ . 

问题是;它总是给我IndexError:列表索引超出范围。

PS。 convert是另一个将字符串列表转换为数组的函数。

1 个答案:

答案 0 :(得分:0)

当你len(f.readlines())时,它会到达文件末尾,因此f.readline()每次都从文件末尾开始。你总是得到空字符串。