исключить шаблон в любом месте пути, возвращаемого rglob - PullRequest
0 голосов
/ 19 июня 2020

Есть ли способ исключить шаблон из существующего где-либо внутри пути rglob:

for dir in Path(args.path).rglob("my_dir"):
    print(dir)


/home/user/path/to/this/my_dir
/home/user/bad/path/to/my_dir
/home/user//path/to/other/my_dir

Все это отображается в rglob, но возможно ли следующее?:

for dir in Path(args.path).rglob("[!bad]my_dir"):
    print(dir)

/home/user/path/to/this/my_dir
/home/user//path/to/other/my_dir

1 Ответ

1 голос
/ 19 июня 2020

После получения всех путей вы можете использовать регулярное выражение (python re package), чтобы сопоставить все пути, содержащие bad, и добавить все остальные в свой окончательный список.

Регулярное выражение будет выглядеть следующим образом: \/bad\/

Вы также можете использовать простой оператор if:

for dir in Path(args.path).rglob("my_dir"):
    if "/bad/" in dir:
        print(dir)


/home/user/path/to/this/my_dir
/home/user/path/to/other/my_dir
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...