【问题标题】:Python if statement error handling [duplicate]Python if语句错误处理[重复]
【发布时间】:2012-09-17 00:09:14
【问题描述】:

可能重复:
How do I check if a file exists using Python?

我是一个学习 python 的初学者,但是如果有人输入了不存在的无效路径,例如 Z:\ 而不是 C:\,我想以某种方式处理这段代码它引发某种错误,现在我知道该怎么做,我只是不知道如何检查它是否无效?比如如何让我的代码在创建路径之前检查该驱动器或路径是否存在于这台 PC 上,有没有办法在 python 中做到这一点?

website_path = input("\nEnter the absolute path for your website: ")

任何建议都会很棒,谢谢。

【问题讨论】:

  • 为什么不加评论就投反对票?对于刚开始的人来说,这是一个很好的问题。它提出了是否测试或排除的基本精神
  • @JasonMorgan 这个问题表明自己的研究工作很少。标题和标签与实际问题没有直接关系。正文格式也不是很容易识别实际问题。我可以理解为什么有人敢对此投反对票。

标签: python python-3.x


【解决方案1】:

处理此问题的 Pythonic 方式是“请求宽恕,而不是许可”:只需尝试在获得的路径上执行您要执行的任何操作(例如打开文件),然后让您调用的函数引发适当的你例外。然后使用exception handling 使错误消息更加用户友好。

这样,您就能及时完成所有检查。事前检查是不可靠的;如果在其他进程删除文件之前检查文件是否存在怎么办?

【讨论】:

  • 或者你可以将输入语句变成一个循环,然后使用os.path.exists(),但答案是正确的以更Pythonic的方式。
  • @JasonMorgan:它甚至是一种更加健壮和安全的方式。有关基本原理,请参阅扩展答案。
【解决方案2】:

我猜你正在寻找这样的东西。您可以使用 try 和 except 来测试事情是否可行。您还可以在 except 块下处理特定的异常。 (我确信 urlopen 在失败时会返回一个)

from urllib import urlopen
website_path = raw_input("\nEnter the absolute path for your website: ")
try:
    content = urlopen(website_path).read()
    print "Success, I was able to open: ", website_path 
except:
    print "Error, Unable to open: " , website_path

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-01
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    相关资源
    最近更新 更多