Connecting Tech Pros Worldwide Forums | Help | Site Map

Python code to search a folder(not file) inside another folder

Newbie
 
Join Date: Aug 2008
Posts: 1
#1: Aug 24 '08
Hi, I am new to python. I have to devlope a small for code for getting the path of a particular folder, that is given as input to the code, in the other folder. Basically i have to search a folder, not file, inside another folder. I work on windows platform. Can anybody help me.

boxfish's Avatar
Expert
 
Join Date: Mar 2008
Location: California
Posts: 478
#2: Aug 24 '08

re: Python code to search a folder(not file) inside another folder


Hi,
I'm not sure what you're trying to do. It sounds like some of the functions in the os.path module might be useful for this.
bvdet's Avatar
Moderator
 
Join Date: Oct 2006
Location: Nashville, TN
Posts: 1,566
#3: Aug 24 '08

re: Python code to search a folder(not file) inside another folder


The following returns a list of the folders named "dir_name" found under "head_dir". The folder and its subfolders are recursively searched.
Expand|Select|Wrap|Line Numbers
  1. import os
  2.  
  3. def dir_list_folder(head_dir, dir_name):
  4.     """Return a list of the full paths of the subdirectories
  5.     under directory 'head_dir' named 'dir_name'"""
  6.     dirList = []
  7.     for fn in os.listdir(head_dir):
  8.         dirfile = os.path.join(head_dir, fn)
  9.         if os.path.isdir(dirfile):
  10.             if fn.upper() == dir_name.upper():
  11.                 dirList.append(dirfile)
  12.             else:
  13.                 # print "Accessing directory %s" % dirfile
  14.                 dirList += dir_list_folder(dirfile, dir_name)
  15.     return dirList
  16.  
  17. if __name__ == '__main__':
  18.     for item in dir_list_folder(r'D:\SDS2_7.1C', 'mem'):
  19.         print item
Example output:
>>> D:\SDS2_7.1C\jobs\610_CC4_71\mem
D:\SDS2_7.1C\jobs\613_Ironstone_Bank\mem
D:\SDS2_7.1C\jobs\614_Embraer\mem
D:\SDS2_7.1C\jobs\615_Ironstone_OK\mem
D:\SDS2_7.1C\jobs\616_Greenway\mem
D:\SDS2_7.1C\jobs\617_Villa\mem
D:\SDS2_7.1C\jobs\618_Johnston\mem
D:\SDS2_7.1C\jobs\619_Okaloosa_Walton\mem
D:\SDS2_7.1C\jobs\Great_Wolf\mem
>>>

The following does the same thing, but uses os.walk():
Expand|Select|Wrap|Line Numbers
  1. import os
  2.  
  3. def dir_list_folder(head_dir, dir_name):
  4.     outputList = []
  5.     for root, dirs, files in os.walk(head_dir):
  6.         for d in dirs:
  7.             if d.upper() == dir_name.upper():
  8.                 outputList.append(os.path.join(root, d))
  9.     return outputList
  10.  
  11. print '\n'.join(dir_list_folder(r'D:\SDS2_7.1C\jobs', 'mem'))
Reply