Модератор: Модераторы разделов
Se9a
Сообщения: 67
ОС: openSUSE 11
Сообщение
Se9a » 06.03.2008 12:48
Как сделать, чтобы os.walk следовал по символическим ссылкам директорий?
Т.е., если сделать
Код: Выделить всё
mkdir -p dir1/sub1 dir2
touch dir1/file1 dir2/file2 dir1/sub1/file3
cd dir1 && ln -s ../dir2 && cd ..
python
>>> import os
>>> for root, dirs, files in os.walk('dir1'):
... print root
... print dirs
... print files
...
dir1
['sub1', 'dir2']
['file1']
dir1/sub1
[]
['file3']
>>>
видно, что dir2 есть в директориях, содержащихся в dir1, но она почему-то не просматривается как sub1.
Se9a
Сообщения: 67
ОС: openSUSE 11
Сообщение
Se9a » 06.03.2008 19:05
Оказывается,
никак
Решил следующим образом:
Код: Выделить всё
import os
paths = ['.']
for root, dirs, files in os.walk('.'):
for dir in dirs:
if os.path.islink(dir):
paths = paths + [os.path.join(root,dir)]
for path in paths:
for root, dirs, files in os.walk(path):
print files