Python在Windows上的os.listdir行为

D K*_*D K 9 python windows operating-system

>>> 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']
Run Code Online (Sandbox Code Playgroud)

为什么"c:"之后的"/"会影响结果?有没有办法os.listdir('c:')返回"c:/"的内容?

Joa*_*uer 22

我不认为这是特定于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:\.