2016-06-22 1 views
0

Я хотел бы создать список всех подкаталогов, содержащих «HICU-B» в их имени. Только каталоги не файлы (некоторые файлы в родительском каталоге тоже содержат это).python Поиск подкаталогов

Мне интересно, есть ли способ объединить glob и os.walk() вместе для этого. Или если есть еще один способ сделать это.

Это код, который я до сих пор:

Это получает файлы и каталоги, которые содержат текст, я хотел бы.

dirstext=glob.glob('/data01/HICU-B*') 

И это получает каталоги.

dirs=next(os.walk('/data01'))[1] 

Я не могу понять, как объединить их, чтобы получить только каталоги с «HICU-B» в названии, а не файлы.

Мысли?

ответ

1

Append слэш '/' до конца HICU-B*:

dirstext = glob.glob('/data01/HICU-B*/') 

Это возвращать только каталоги с именами, начинающимися с HICU-B* в то время как файлы будут исключены.

Если вам нужно walk через согласующие каталоги, чтобы вернуть все свои подкаталоги и файлы, вы можете сделать:

dirs = [list(i) for i in map(os.walk, dirstext)] 
+0

Это работало отлично! Один вопрос - есть ли способ получить только имя каталога, а не путь с помощью glob? Прямо сейчас он возвращает '/ data01/HICU-B01', и мне бы хотелось только HICU-B01, как пример – VickiT05

+0

Вы можете 'cd' в каталог и сделать:' glob.glob ('HICU-B * /') ' –

+0

Есть ли способ сделать это без' cd'? Я пишу это в скрипте, а не в командной строке. – VickiT05

 Смежные вопросы

  • Нет связанных вопросов^_^