6

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

我有以下目录结构:

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

当我打开我的 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 资源管理器中时,我可以毫无问题地访问它们。我检查了权限,所有文件夹都具有相同的权限。有谁知道我做错了什么?

4

3 回答 3

16

转义反斜杠 ( \)

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

或使用原始字符串:

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

没有逃避,你会走错路:

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

>>> print '\\f'
\f
>>> print r'\f'
\f
于 2013-08-18T14:11:20.423 回答
2

而不是使用 \,您可能想要使用 os.path.sep 以便您的代码在其他平台上工作,然后您也不必转义这些。

于 2014-01-17T22:14:50.987 回答
0

当您使用

os.path.normpath(your_path)

您会遇到前斜杠/反斜杠问题。(但它可以改变意思,所以只要知道你在做什么。但对于正常路径没有问题)

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

效果很好:)

于 2018-07-18T18:40:51.860 回答