我在读取模拟代码的大(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是另一个将字符串列表转换为数组的函数。
答案 0 :(得分:0)
当你len(f.readlines())
时,它会到达文件末尾,因此f.readline()
每次都从文件末尾开始。你总是得到空字符串。