即使文件夹存在,os.path.isdir()也返回False

时间:2013-08-18 14:10:32

标签: python filesystems

我正在编写一个脚本,必须检查所有指定的文件夹是否确实存在。 我发现我必须使用带有绝对路径的os.path.isdir()。

我有以下目录结构:

X:\
  pythonscripts\
    files\
      Films\
      Series\
    src\

当我打开op my python命令行并尝试文件夹实际存在时,我得到以下内容:

>>> import os
>>> os.path.isdir('X:\pythonscripts\src')
True
>>> os.path.isdir('X:\pythonscripts\files')
False
>>> os.path.isdir('X:\pythonscripts\files\Films')
False
>>> os.path.isdir('X:\pythonscripts\files\Series')
False

这很奇怪,因为当我将这些路径复制并粘贴到Windows资源管理器中时,我可以毫无问题地访问它们。我检查了权限,所有文件夹对它们具有相同的权限。有谁知道我做错了什么?

3 个答案:

答案 0 :(得分:15)

转义反斜杠(\

os.path.isdir('X:\\pythonscripts\\src')

或使用原始字符串:

os.path.isdir(r'X:\pythonscripts\src')

没有逃脱,你得错路径:

>>> '\f'
'\x0c'
>>> print '\f'

>>> print '\\f'
\f
>>> print r'\f'
\f

答案 1 :(得分:2)

您可能希望使用os.path.sep而不是使用\,以便您的代码可以在其他平台上运行,然后您也不必转义它们。

答案 2 :(得分:0)

使用时

os.path.normpath(your_path)

您会收到反斜杠/反斜杠问题的答案。 (但是它可以改变含义,所以只知道您在做什么。但是对于普通路径来说没有问题)

https://docs.python.org/3.6/library/os.path.html#os.path.normpath

效果很好:)