Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Searching a directory for folders and files using python

I have a directory structure like the one given below.

         MainFolder 
             |
           [lib] 
         /   |   \
       [A]  [B]  [C] -- file1.so 
        |     |         file2.so
   file1.so   file1.so
   file2.so   file2.so    

I'm trying to look for the 'lib' folder in that structure which might not be there at times. So I'm using the following to check for the presence of the 'lib' folder:

   if os.path.isdir(apkLocation + apkFolder + '/lib/'):

If lib folder exists, then I carry on to search the folders inside 'lib'. I have to store the names of the folder A,B and C and look for the files ending with '.so' whose path should be stored as /lib/A/file1.so,/lib/A/file2.so and so on.

 if os.path.isdir(apkLocation + apkFolder + '/lib/'):
   for root, dirs, files in os.walk(apkLocation + apkFolder):
            for name in files:
                if name.endswith(("lib", ".so")):
                    print os.path.abspath(name) 

This gives me an out

                  file1.so
                  file2.so
                  file1.so
                  file2.so
                  file1.so
                  file2.so

Desired output:

           /lib/A/file1.so
           /lib/A/file2.so
           /lib/B/file1.so
           /lib/B/file2.so
           /lib/C/file1.so
           /lib/C/file2.so

and also the folders A,B and C are to be saved separately.

like image 590
DesperateLearner Avatar asked Sep 17 '13 22:09

DesperateLearner


People also ask

How do I get a list of files in a directory in Python?

To get a list of all the files and folders in a particular directory in the filesystem, use os. listdir() in legacy versions of Python or os. scandir() in Python 3.


1 Answers

You have to join the current directory and the name to get the absolute path to a file:

for root, dirs, files in os.walk(apkLocation + apkFolder):
    for name in files:
        if name.endswith(("lib", ".so")):
            os.path.join(root, name)

It's documented here http://docs.python.org/3/library/os.html#os.walk, too.

like image 107
Christian Heimes Avatar answered Oct 05 '22 22:10

Christian Heimes