我正在编写一个脚本,必须检查所有指定的文件夹是否确实存在。 我发现我必须使用带有绝对路径的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资源管理器中时,我可以毫无问题地访问它们。我检查了权限,所有文件夹对它们具有相同的权限。有谁知道我做错了什么?
答案 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
效果很好:)