>>> import os
>>> os.chdir('c:/python27')
>>> os.listdir('c:')
['Tools', 'include', 'python.exe', 'libs', 'DLLs', 'Lib', 'NEWS.txt',
'w9xpopen.exe', 'Doc', 'pythonw.exe', 'LICENSE.txt', 'README.txt', 'tcl']
>>> os.listdir('c:/')
['users', 'Program Files', 'Python27', 'windows']
Why is the "/" after "c:" affecting the outcome? Is there a way to get os.listdir('c:')
to return the contents of "c:/"?
This is not specific to Python, it's a Windows question at heart.
In Windows C:
and C:\
(or, alternatively C:/
) have quite different meanings:
C:
refers to the current directory on the drive C:
C:\
(and C:/
) refers to the root directory of the drive C:
While UNIX-like operating systems simply have a "current directory", Windows has two separate notions:
So the current drive could be D:
, the current directory on C:
could be \Windows
(effectively C:\Windows
) and the current directory on D:
could be \Data
(effectively D:\Data
). In this scenario resolution would work like this:
.
would refer to D:\Data
\
would refer to D:\
C:
would refer to C:\Windows
C:\Foo
would refer to C:\Foo
So if you want to have information about a specific directory, you should always use a full path including both a drive and a directory, such as C:\
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With