【问题标题】:How to display file not found? [duplicate]找不到文件怎么显示? [复制]
【发布时间】:2020-12-06 05:46:57
【问题描述】:

我在 Python 3.6 中使用它:

filetest="test.txt"
with open(filetest,"r") as file:

如果在 filetest 上没有检测到输入,我应该如何让 Python 控制台显示“文件不可用”作为输出? (比如目录下没有test.txt)

【问题讨论】:

  • 放置一个try/except 块或使用ospath 模块检查文件是否存在
  • 添加 try/except 块,如果您要读取的文件不存在,还捕获 FileNotFoundError。捕获一个简单的异常并不是所有编程语言的好习惯。
  • 'test.txt'是带文件名的字符串,test.txt是对象txt的属性txt

标签: python python-3.x


【解决方案1】:

您可以将其包装在 try-except 块中,如果没有名为“test.txt”的文件,那么您将打印消息:“文件不可用”。

一个简单的例子是:

filename="test.txt"
try:
    with open(filetest,"r") as file:
        pass
except OSError as e:
    print("File not available")
    print(e.strerror)

我添加了OSError,因为它表明文件处理存在问题,您可以在以下链接中阅读:https://docs.python.org/3/library/exceptions.html

也可以使用FileNotFoundError 异常。

【讨论】:

  • 您需要在 with 块中添加一些内容(如果您不需要使用该文件,甚至只需一个 pass)以使其在语法上合法。
  • Blank except 子句不一定是值得鼓励的……也许except 子句更具体……在这里你会很高兴地发现with 中的各种其他错误阻止
  • @ShadowRanger 正确,最初我有一个打印想要添加到答案中!
  • @donkopotamus 你是对的,添加了OSError 异常并添加了一个链接供用户阅读内置异常
  • 更广泛的例外是好的。您可以先except OSError as e:,然后再print(e.strerror),这样您就不会用假定的无此类文件掩盖不同的问题。
【解决方案2】:

Try-except 块就是您要寻找的。​​p>

try:
    filename=test.txt
    with open(filetest,"r") as file:
        print('File is available')
except EnvironmentError: # any IOError or OSError will be captured
    print('File not available')

【讨论】:

  • 异常子句非常“宽泛”...捕获可能与打开文件无关的异常...例如,当前代码甚至在您尝试打开之前都会出错文件...
【解决方案3】:

使用try-except下面给出的一个简单示例:

filename = 'test.txt'
try:
    with open(filename,"r") as file:
        read_file = file.read()

except FileNotFoundError:
    print("File not found")

【讨论】:

    猜你喜欢
    • 2014-03-15
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多