【问题标题】:displaying a line of text - try/except显示一行文本 - try/except
【发布时间】:2021-06-22 07:24:22
【问题描述】:

我想输入这样的代码,以便它显示用户指示的行的内容(作为从键盘读取的数字)。当超出列表的范围(行数)时,我需要处理异常,但是我不知道如何在此处放置异常(而不是 "if" )。

到目前为止,我已经编写了这样的代码:

import linecache
number = int(input("Line: "))
lines = linecache.getline("text.txt", number)
print(lines)
if lines == '':
    print("no such line was found")

程序正确读取了该行的内容,但是当我要处理异常时,请选择 text.txt 范围之外的一行,例如不存在的第250行,它没有显示异常“没有找到这样的行”,我该如何改进它?

提前致谢!!!

【问题讨论】:

  • getline 没有返回异常,所以这里没有什么可以尝试捕捉的。

标签: python for-loop exception input except


【解决方案1】:

根据文档,此函数不会引发异常, 如果找不到行号,它确实返回一个空行: https://docs.python.org/3/library/linecache.html#linecache.getline

如果要引发异常,只需将 print 替换为 raise ValueError 异常即可。

import linecache


number = int(input("Line: "))
line = linecache.getline("text.txt", number)


if line == '':
    raise ValueError(f"Line number {number} was not found")

【讨论】:

    猜你喜欢
    • 2021-06-22
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 2020-03-29
    • 2020-12-11
    相关资源
    最近更新 更多