Thursday, May 14, 2015

Python: Directory walking


Abstract: get files by absolute directory, file names, and incrusive file with a given directory


The script:
#module
import fnmatch
import os

class os_dir:
     def __init__(self, dir):
          self.dir=dir
          if not self.dir[-1]=='/':
               self.dir=self.dir + '/'
          self.entries=os.listdir(self.dir)
     
     def dirs(self):
          dirs=[]
          for entry in self.entries:
               abs_entry=self.dir+entry
               if os.path.isdir(abs_entry):
                    dirs.append(abs_entry)
          return dirs

     def files(self):
          files=[]
          for entry in self.entries:
               abs_entry=self.dir+entry
               if os.path.isfile(abs_entry):
                    files.append(abs_entry)
          return files

     def file_names(self):
          files=[]
          for entry in self.entries:
               abs_entry=self.dir+entry
               if os.path.isfile(abs_entry):
                    files.append(entry)
          return files

     def incrusive_files(self, pattern):
          incrusive_files=[]
          for root, dirs, files in os.walk(self.dir):
               for filename in fnmatch.filter(files, pattern):
                    incrusive_files.append( os.path.join(root, filename))
          return incrusive_files

####################
#main program
df=os_dir('/home/yuan/mysql_pre')

#file names
print 'File names:', df.file_names(), "\n"
#files
print 'Files:', df.files(), "\n"

#sub directories
print 'sub directories:', df.dirs(), "\n"

#incrusive directories
print 'Incrusive directories:', df.incrusive_files("*.csv")

Writing date: 20150514

No comments:

Post a Comment