ОС Python.поведение listdir в 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:/"?
2 ответов
я не думаю, что это специфично для 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:.
есть ли способ получить ОС.listdir ('c:'), чтобы вернуть содержимое "c:/"?
нет.
вы можете, однако, изменить каталоги. Но это может сбить с толку пользователей.