仅多次打印第一行

时间:2014-03-11 01:55:25

标签: python printing readline

文件被传递到函数中,目标是打印行,但它只是多次打印第一行。

def printRecord(rec1):
#read reads in a single record from the first logfile, prints it, and exits
    s = Scanner(rec1)
    line = s.readline()
    print(line)
    s.close()
    return line


def printRecords(rec1):
#loops over all records in the first log file, reading in a single record and printing it before reading in the next record
    lines = ""
    s = Scanner(rec1)
    for i in range(0, len(rec1), 1):
        lines += printRecord(rec1)
    return lines

2 个答案:

答案 0 :(得分:0)

我认为printRecord(rec1)只是读取文件的第一行。我使用open()而不是Scanner()时可能会出错。我不知道Scanner是否重要,但我会做出类似的事情:

def printRecords(rec1):
  f = open(rec1,'r')
  lines = f.read()
  return lines

答案 1 :(得分:0)

您的问题是当您关闭并重新打开扫描程序中的日志文件时,您将从日志文件的开头开始。

相反,取消第一个函数,只读取for循环中的行:

for i in range(0, len(rec1), 1):
    line = s.readline()
    print(line)
    lines += line
return lines

修改

通过外交,如果你想保留两种方法,将Scanner作为参数传递给函数调用,它将跟踪它的位置。因此,而不是在printRecord中创建一个新的Scanner,而不是:

def printRecord(rec1, s):

其中s是您在printRecords中创建的扫描仪