繁体   English   中英

Python 在 Windows 上的 os.listdir 行为

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM