Python 的 os.listdir 在 Windows 上的行为
>>> 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']
为什么在“c:”后面加上“/”会影响结果呢?有没有办法让os.listdir('c:')
返回“c:/”里的内容?
2 个回答
4
C: 表示的是C盘上当前的工作目录。
C:/ 被转换成 C:\,它指的是C盘的根目录。
有没有办法让 os.listdir('c:') 返回 "c:/" 的内容呢?
没有。
不过,你可以切换目录。但是这样可能会让用户感到困惑。
28
这其实不是Python的问题,根本上这是一个关于Windows的问题。
在Windows中,C:
和C:\
(或者说C:/
)的意思是完全不同的:
C:
指的是当前在C:
盘上的目录C:\
(和C:/
)指的是C:
盘的根目录
而在类似UNIX的操作系统中,只有一个“当前目录”的概念,但Windows有两个不同的概念:
- 当前盘符和
- 每个盘符的当前目录
所以,当前盘符可以是D:
,而在C:
盘上的当前目录可以是\Windows
(实际上是C:\Windows
),在D:
盘上的当前目录可以是\Data
(实际上是D:\Data
)。在这种情况下,路径的解析会是这样的:
.
指的是D:\Data
\
指的是D:\
C:
指的是C:\Windows
C:\Foo
指的是C:\Foo
所以,如果你想要获取某个特定目录的信息,最好总是使用完整的路径,包括盘符和目录,比如C:\
。