Windows上Python的os.listdir行为
问题内容:
>>> 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:/”的内容?
问题答案:
这并非特定于Python,而是Windows的核心问题。
在WindowsC:
和中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:\
。