os.path.isdir() returns False even when folder exi

2019-02-17 17:39发布

问题:

I'm currently writing a script which has to check if all specified folders actually exist. I found out I have to use os.path.isdir() with absolute paths.

I have the following directory structure:

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

When I open op my python command line and try if the folders actually exist, I get the following:

>>> 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

Which is odd, because when I copy and paste these paths into Windows Explorer, I can access them without problems. I checked permissions and all folders have the same permissions on them. Does anyone know what I'm doing wrong?

回答1:

Escape backslash (\)

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

or use raw string:

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

without escape, you get wrong path:

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

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


回答2:

Rather than use \, you might want to use the os.path.sep so that your code works on other platforms, then you don't have to escape these either.



回答3:

When you are using

os.path.normpath(your_path)

you get rit of frontslash/backslash problemens. (But it can change the meaning, so just know what you are doing. But for normal paths there is no problem)

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

Works very well :)