繁体   English   中英

蟒蛇。 每次按ENTER键,将文件中的文本显示为20行片段

[英]Python. Showing text from a file in fragments of 20 lines every time ENTER is pressed

这是我目前的代码

print "Please input the filename:"
n = raw_input()
f = open(n,"r")
x = 0
for line in f.readlines():
    print line
    x+=1
    if x % 20 == 0:
        break
        q = raw_input()
        if q == "":
            x+= 20
        continue

程序应该做的事情:1)询问文件名2)读取文件3)打印文件的前20行4)在前20行之后停止工作,等待Enter键5)如果按Enter,则显示文件的后20行(20-> 40,依此类推)

当前问题:循环不会重新开始,它仅显示前20行,然后停止工作。

基本上,您想每20行暂停一次。 目前,您在前20行之后就退出了循环。

for line in f:
    print line
    x += 1
    if x % 20 == 0:
        raw_input("Hit enter")

应该足够了。

filename = raw_input("Please enter the file name: ")
with open(filename) as f:
    lines = f.readlines()
    for i in xrange(0, len(lines), 20):
        print lines[i:i+20]
        raw_input("Press Enter for more")

这会将整个文件读入内存,因此如果文件很大,您可能不希望使用切片。 但是,如果文件很大,则您不太可能希望一次浏览20行;)

主要的变化是我们使用with语句打开文件。 这比使用open / close好得多,并保证将始终关闭文件。

在发布的代码中,当执行break ,您将退出外观。 break离开了循环,因此您只想为此使用它。 如果您出于某种原因(例如等待用户)而仅需要暂停执行, just calling a blocking operation like raw_input之just calling a blocking operation like就足够了。

同样, continue完全没有必要。 在循环主体的末尾,它别无选择,只能continue

if q == "": x += 20 ,您在想些什么? 首先,应该为if not q: x += 20 (空字符串(如空列表/字典/元组)的值为False ),其次,这将跳过接下来的20行。 这是您尚未共享的要求吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM