2013-11-03 105 views
0

我试图拿一个文本文件,当用户按下任意键时,打印出25行文本文件,然后再次按下该键时,那么接下来的25行印刷等打印一个文本文件的前25行,然后是下一个25等

到目前为止,我得到这个代码:

f = open("lab6text.txt", "r"); 
print f 

for line in f.readlines(): 
    print line, 

但无论我穿什么号码的:

f.readlines(25): 

每一行仍印刷。我怎样才能解决这个问题?

谢谢!

+4

你为什么认为'.readlines(25)'会读取25行?如何学习文档? – Cthulhu

回答

2

读取“块”中的文件的更简单方法是使用iter(callable, sentinel)函数。

def make_lines_reader(fobj, number_of_lines): 
    def reader(): 
     return ''.join(fobj.readline() for _ in range(number_of_lines)) 
    return reader 

with open('the-file.txt') as f: 
    for chunk in iter(make_lines_reader(f, 25), ''): 
     print(chunk, end='') 
     input() #assuming python3, in python2 use raw_input() 

这将打印从the-file.txt 25条线,然后等待用户按Enter键。之后它将打印其他25行等。

1

readlines不会将行数作为参数。它取而代之的是提示,这是读取的最大字节数/字符数。除非你知道每行的长度,否则这可能不会达到你的目的。

如果你要打印的下一个25行的文件,你可以用一个列表理解,readlinejoin

​​

这样,你就不会加载所有的文件一次,但接下来的25行。

您可以在while循环内嵌入此(或类似内容),以在用户按下某个键时从文件加载更多行。

0

您可以声明一个函数,该函数最多打印25行,并返回是否遇到文件末尾。

def print25lines(f): 
    for _ in range(25): 
     line = f.readline() 
     if line: 
      print line, 
     else: 
      return False 
    return True 

with open('lab6text.txt', 'r') as f: 
    while print25lines(f): 
     # Wait user to press enter 
     raw_input("Press Enter to continue...") 
相关问题