Windows上Python的os.listdir行为

问题描述 投票:9回答:2
>>> 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 operating-system filepath
2个回答
23
投票

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

4
投票

C:使用C:驱动器上的当前工作目录。

© www.soinside.com 2019 - 2024. All rights reserved.