在python中读取最后一行后返回文件的开头

时间:2017-08-31 18:59:29

标签: python

我想逐行读取文件,但在读完最后一行后,它应该返回到文件的开头。

这是我的代码:

def readLabels(self, n):
    resline = np.empty([0,2])
    for i in range(0,n):
        line = (self.f2.readline()).split(',')
        line = [x for x in line if is_number(x)]
        line = [float(s) for s in line]
        line = np.asarray(line)
        resline = np.concatenate((resline, [line]),axis=0)
    return resline

此函数作为批处理返回文件的n行。但是,它应该不断返回到文件的开头,这样我就可以一遍又一遍地读取批次。 那么我怎样才能让readline回到起点呢?

感谢您的时间!

3 个答案:

答案 0 :(得分:2)

第一次阅读后,您可以尝试self.f2.seek(0)。这会将偏移位置设置为0。

答案 1 :(得分:1)

你必须寻找文件的开头。

因此,在您的情况下,我认为该文件为self.f2,因此您必须使用:

self.f2.seek(0)

答案 2 :(得分:1)

你应该检查readline()返回的内容。如果它返回空字符串,则可以返回文件的开头。

def readLabels(self, n):
    resline = np.empty([0,2])
    for i in range(0,n):
        line = self.f2.readline()
        if not line:
            # back to top
            self.f2.seek(0)
            # read again
            line = self.f2.readline()
        line = line.split(',')
        line = [x for x in line if is_number(x)]
        line = [float(s) for s in line]
        line = np.asarray(line)
        resline = np.concatenate((resline, [line]),axis=0)
    return resline