【问题标题】:What is the time complexity of Python's os.path.exists()? [duplicate]Python 的 os.path.exists() 的时间复杂度是多少? [复制]
【发布时间】:2018-08-24 08:08:34
【问题描述】:

我有大量相互嵌套的文件夹。
Python 的 os.path.exists() 的时间复杂度是多少?
如果与不同的操作系统一起使用,它会改变吗?

【问题讨论】:

  • Quora answer for ext4 - 其他系统的数据结构可能不同。
  • 底层实现seems to call os.lstat。它似乎不遵循符号链接,因此它可能更加优化。
  • 我来到这里想知道 os.path.exists() 在远程安装的 CIFS 文件系统上的表现如何。因此标记为重复只考虑到 ext4 和当前的答案非常令人失望。

标签: python python-3.x time-complexity code-complexity


【解决方案1】:

os.path.exists 只是执行系统调用,如果路径指向现有文件或目录,则返回 True。
Python 似乎在给定路径上执行lstat() 系统调用。

如果该操作仅包含在哈希表中查找,则成本为O(1),但可能取决于操作系统及其内部实现方式。

【讨论】:

【解决方案2】:

鉴于您询问操作系统是否存在单个文件,它不需要执行任何算法逻辑,或者沿着您的路径前进……我看不出它除了 O(1) 之外的其他任何东西。

【讨论】:

  • 所以,如果我执行os.path.exists("/home/myProject/testFolder/") 之类的操作,应该是 O(1) 吗?
  • 如果底层内核调用需要列出某个目录中的所有文件或遍历目录块,这可能取决于指向目录中的文件数。例如,它是旧 VFAT 的实现。使用 ext4 似乎是 O(1)
  • 是的,你是对的,@kriss。这就是我在评论中发布的链接中提到的内容。
猜你喜欢
  • 2021-08-03
  • 2016-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-21
  • 2018-11-24
  • 2014-05-27
相关资源
最近更新 更多