Как найти все символические ссылки в каталоге и его подкаталогах в python - PullRequest
1 голос
/ 29 мая 2020

Мне нужно перечислить символические ссылки, используя python. Также битая

Как мне это сделать? Я искал везде и много пробовал.

Лучший результат, который я нашел, был:

import os,sys
print '\n'.join([os.path.join(sys.argv[1],i) 
    for i in os.listdir(sys.argv[1]) if 
    os.path.islink(os.path.join(sys.argv[1],i))])

Он не показывает, где он связан, и не go с подкаталогами.

1 Ответ

1 голос
/ 29 мая 2020

Вы можете использовать код, похожий на этот, чтобы достичь того, что вам нужно. Каталоги для поиска передаются в качестве аргументов или текущий каталог принимается по умолчанию. Вы можете изменить это дополнительно с помощью метода os.walk, чтобы сделать его рекурсивным.

import sys, os

def lll(dirname):
    for name in os.listdir(dirname):
        if name not in (os.curdir, os.pardir):
            full = os.path.join(dirname, name)
            if os.path.isdir(full) and not os.path.islink(full):
                lll(full)
            elif os.path.islink(full):
                print(name, '->', os.readlink(full))
def main(args):
    if not args: args = [os.curdir]
    first = 1
    for arg in args:
        if len(args) > 1:
            if not first: print()
            first = 0
            print(arg + ':')
        lll(arg)

if __name__ == '__main__':
    main(sys.argv[1:])

Ссылка: https://github.com/python/cpython/blob/master/Tools/scripts/lll.py

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...