ОС 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:/"?
нет.
вы можете, однако, изменить каталоги. Но это может сбить с толку пользователей.