【问题标题】:Unable to open files returned by os.listdir无法打开 os.listdir 返回的文件
【发布时间】:2021-08-10 21:18:51
【问题描述】:

我有一些这样的代码:

import os
directory = 'H:\\path\\to\\files'
for file in os.listdir( directory ):
  open( os.path.join( directory, file ) )

在极少数情况下,在目录上运行此代码会引发以下错误。

IOError: [Errno 2] No such file or directory: 'H:\\path\\to\\files\\blahblah.file'

目录中的每个文件都不会发生这种情况 - 前几个文件已正确打开,但随后会在其中一个文件上失败,每次都相同。

有问题的文件确实存在,所以这是open的问题,而不是os.listdir的问题。

奇怪的是,更改工作目录并将directory 更改为相应的相对路径会影响我们在哪个文件上失败。

我在 Windows 10 上运行 Python 2.7。

更新 好像和文件名的长度有关。文件名通常很长:如果我将文件重命名为更短的名称,那么它会成功;更长的时间,它再次失败。这或许可以解释为什么我们在使用较长的相对路径时会在不同的点上失败。

【问题讨论】:

  • 你为什么运行 python 2.7?它不再受支持。
  • @MaxNoe 我的组织尚未迁移到 Python 3。
  • 可能和权限有关
  • 确实如此。是否有可能在 Windows 上您可以看到文件存在但您无权打开它?
  • @AntonCurmanschii 这是个好主意,但权限似乎没有任何问题。该文件没有权限限制。

标签: python python-2.7 file file-io operating-system


【解决方案1】:

这似乎是由 260 个字符的 path length limit 引起的。失败的文件的路径长度超过 260 个字符。

【讨论】:

    猜你喜欢
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-06
    • 2016-12-18
    • 2015-05-02
    • 2020-08-03
    • 1970-01-01
    相关资源
    最近更新 更多