【问题标题】:Check whether a path is valid in Python检查路径在 Python 中是否有效
【发布时间】:2011-05-05 09:52:57
【问题描述】:

有没有简单的方法来检查路径是否有效?该文件现在不必存在,我想知道它是否存在。

我现在的版本是这样的:

try:
  f = open(path)
except:
  <path invalid>

我正在考虑简单地检查路径是否包含任何these 字符。

【问题讨论】:

标签: python


【解决方案1】:

您也可以尝试以下方法:

import os  
if not os.path.exists(file_path):
    print "Path of the file is Invalid"

【讨论】:

  • 这只是报告文件是否存在。该问题专门询问路径是否有效,而不是它是否存在。
  • 如果文件存在,那么它自然是一个有效的路径并且它确实存在
  • 并不是真正的形式谬误,而是定义问题。路径在可以存在时有效,即存在或不一定存在但可以根据需要创建的路径。
  • 根据 3.5.7 文档:“如果路径引用现有路径或打开的文件描述符,则返回 True。”这将解决所问的问题。 docs.python.org/3.5/library/os.path.html#os.path.exists
  • 回声水生生物。我正在接受用户输入。我想检查路径是否有效(OP 的问题)。路径“/Users/billybob/config.txt”无论是否存在都是有效的。路径“£@/somewhere**spilled_coffee_on_the_keyboard”无效,而且永远不可能。
【解决方案2】:

先尝试是最好的方法,我建议这样做。

try:
    open(filename, 'w')
except OSError:
    # handle error here

我相信你会得到 OSError,明确地捕获它,并在你使用它的平台上进行测试。

【讨论】:

  • +1 仅供参考,IOError: [Errno 22] invalid mode ('w') or filename: ...
  • 有问题的答案。 如果filename 确实 存在,则此解决方案会静默地将其创建为 0 字节文件。 (这可能很糟糕。)如果filename 是现有文件,则此解决方案会静默地将其截断为 0 字节文件。 (那肯定很糟糕。)如果filename 是现有目录,则此解决方案会引发一个异常,该异常需要与上面bernie 描述的所需[Errno 22] IOError 异常区分开来。 (这至少很烦人。)简而言之,你可能不想想试试这个。
【解决方案3】:

从python 3.4开始,要检查路径是否有效,您还可以使用pathlib模块来执行此操作:

from pathlib import Path

try:
    Path(file_path).resolve()
    exist = True
except (OSError, RuntimeError):
    exist = False

【讨论】:

    猜你喜欢
    • 2011-09-06
    • 1970-01-01
    • 2014-02-20
    • 2012-03-20
    • 2013-04-06
    • 1970-01-01
    • 2014-05-05
    • 2021-03-08
    • 2019-07-17
    相关资源
    最近更新 更多