python: как сделать чтобы os.walk следовал по ссылкам?

Модератор: Модераторы разделов

Se9a
Сообщения: 67
ОС: openSUSE 11

python: как сделать чтобы os.walk следовал по ссылкам?

Сообщение Se9a »

Как сделать, чтобы 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

Re: python: как сделать чтобы os.walk следовал по ссылкам?

Сообщение Se9a »

Оказывается, никак
Решил следующим образом:

Код: Выделить всё

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
Спасибо сказали: