到达文本的最后一行后如何结束程序?

问题描述 投票:0回答:2

我编写此代码的目的是在到达最后一行后退出代码,并且我尝试使用带注释的代码,但它仅打印每隔一行。

try:
a = sys.argv[1]
with open(a, 'r') as f:
    print(f.readline().strip('\n'))
    while True:
        x = input()
        if x == '':
            print(f.readline().strip('\n'))
            # if not f.readline():
              # exit()
            continue
        if x == 'q':
            exit()

except OSError:
  print("Error: Cannot open specified file.")
  exit()
except IndexError:
  print('Usage: python3 less.py <filename>')
  exit()
python file exit readline
2个回答
1
投票

TL; DR

while True:
    x = input()
    if x == '':
        line = f.readline()
        print(line.strip('\n'))
        if line == '':
          exit()
        continue
    if x == 'q':
        exit()

Python中的readline()方法将始终读取next行,因此当您多次调用它时,它将连续读取另一行。因为对于while循环的每次迭代,您都会调用该函数两次,所以实际上您将忽略第一行并检查第二行。通过将f.readline()的输出保存到变量,您每次调用该函数的次数不会超过一次,因此不会跳过任何行。请查看here,以获取有关Python文件操作的更多信息。


0
投票

是,cpchristensen是正确的。我想补充一点,我相信一旦到达EOF,就会执行一个StopIteration异常。因此,一旦异常触发,您可以执行以下操作退出脚本:

with open(sys.argv[1]) as lines:
    try:
        while True:              
            cur_line = next(lines)
            // ... do something with current line
    except StopIteration:
        print('EOF!')
© www.soinside.com 2019 - 2024. All rights reserved.