2016-11-02 5 views
2

Следующий код выводит список каталогов, в которых все случается содержат 3 буквенный код а, пример:Python - Выберите каталог, содержащий определенную строку

// сервер/Вакансии/2016 \ AAM - «areallylongfilename»/

// сервер/Вакансии/2016 \ CLM - 'areallylongfilename'/

// сервер/Вакансии/2016 \ СОО - 'areallylongfilename'/

import os 
basepath = '//Server/Jobs/2016' 
for fname in os.listdir(basepath): 
    path = os.path.join(basepath, fname) 
    if os.path.isdir(path): 
     print(path) 

Как я могу получить один каталог е оставьте список на основе трехбуквенного кода?

+1

Этот код не возвращает * список каталогов, которые все содержат 3 буквенный код *, но пути всех каталогов, присутствующих в «базовом пути». И вы хотите напечатать один путь с печатных путей? Если да, какой-либо путь спецификаций или случайный путь? –

+0

yes Я хотел бы напечатать один путь, если он содержит 3-буквенный код, который я вводил. Я делаю приложение Tkinter для перемещения файлов из источника в одну из каталогов в пути // Server/Jobs/2016. Приложение запрашивает трехбуквенный код для выбора целевого каталога. –

ответ

0
import os 
basepath = '//Server/Jobs/2016' 
asked_name = 'COO' 
if len(asked_name) != 3: 
     print "Expected 3 letter code, got:", asked_name 
else: 
     for fname in os.listdir(basepath): 
       path = os.path.join(basepath, fname) 
       if os.path.isdir(path): 
         if fname == asked_name: 
           print(path) 
+0

Это должно быть 'if ask_name in fname'. Кроме этого, спасибо! –

0

Предположим, что вы хотите сканировать «D:» диск, вы можете кодировать как:

 
import os 
dir="d:\\" 
for root,dirs,files in os.walk(dir): 
    for a_dir in dirs: 
     if ("Server" in a_dir) and ("Jobs" in a_dir) and ("2016" in a_dir): 
      print os.path.join(root,a_dir)