我试图拿一个文本文件,当用户按下任意键时,打印出25行文本文件,然后再次按下该键时,那么接下来的25行印刷等打印一个文本文件的前25行,然后是下一个25等
到目前为止,我得到这个代码:
f = open("lab6text.txt", "r");
print f
for line in f.readlines():
print line,
但无论我穿什么号码的:
f.readlines(25):
每一行仍印刷。我怎样才能解决这个问题?
谢谢!
我试图拿一个文本文件,当用户按下任意键时,打印出25行文本文件,然后再次按下该键时,那么接下来的25行印刷等打印一个文本文件的前25行,然后是下一个25等
到目前为止,我得到这个代码:
f = open("lab6text.txt", "r");
print f
for line in f.readlines():
print line,
但无论我穿什么号码的:
f.readlines(25):
每一行仍印刷。我怎样才能解决这个问题?
谢谢!
读取“块”中的文件的更简单方法是使用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行等。
readlines
不会将行数作为参数。它取而代之的是提示,这是读取的最大字节数/字符数。除非你知道每行的长度,否则这可能不会达到你的目的。
如果你要打印的下一个25行的文件,你可以用一个列表理解,readline
和join
:
这样,你就不会加载所有的文件一次,但接下来的25行。
您可以在while
循环内嵌入此(或类似内容),以在用户按下某个键时从文件加载更多行。
您可以声明一个函数,该函数最多打印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...")
你为什么认为'.readlines(25)'会读取25行?如何学习文档? – Cthulhu