到达文本的最后一行后如何结束程序?
How do I end the program once the last line of the text is reached?
我编写这段代码的目的是在到达最后一行后退出代码,我尝试使用注释代码,但它只打印每一行。
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()
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()
方法总是会读取下行,所以当你多次调用它时,它会不断读取另一行。由于对于 while 循环的每次迭代,您都会调用该函数两次,因此您实际上忽略了第一行并检查了第二行。通过将 f.readline()
的输出保存到一个变量中,您每轮不会多次调用该函数,因此不会跳过任何行。查看 here 了解有关 Python 文件操作的更多信息。
是的, 是对的。我想补充一点,我相信有一个 StopIteration
异常会在到达 EOF 时执行。因此,一旦异常触发,您可以执行类似这样的操作来退出脚本:
with open(sys.argv[1]) as lines:
try:
while True:
cur_line = next(lines)
# ... do something with current line
except StopIteration:
exit()
我编写这段代码的目的是在到达最后一行后退出代码,我尝试使用注释代码,但它只打印每一行。
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()
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()
方法总是会读取下行,所以当你多次调用它时,它会不断读取另一行。由于对于 while 循环的每次迭代,您都会调用该函数两次,因此您实际上忽略了第一行并检查了第二行。通过将 f.readline()
的输出保存到一个变量中,您每轮不会多次调用该函数,因此不会跳过任何行。查看 here 了解有关 Python 文件操作的更多信息。
是的,StopIteration
异常会在到达 EOF 时执行。因此,一旦异常触发,您可以执行类似这样的操作来退出脚本:
with open(sys.argv[1]) as lines:
try:
while True:
cur_line = next(lines)
# ... do something with current line
except StopIteration:
exit()