[英]Python's os.listdir behaviour on 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:/”的内容?
这不是 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:\\
。
C: 使用 C: 驱动器上的当前工作目录。
C:/ 转换为 C:\\ 并使用 C: 驱动器上的根目录。
有没有办法让 os.listdir('c:') 返回“c:/”的内容?
不。
但是,您可以更改目录。 但这可能会让用户感到困惑。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.