Search 程序如果寫的不好,希望大家能夠教導我,,[Python]代码#!


[Python]代码

#!/usr/bin/python3.2 import osimport sysimport fnmatch import timeimport mathclass Search(object):    fcount   = dcount = 0     maxdepth = 0    result   = [ ]    errors   = [ ]     def __init__(self, names, args=[]):         # Check if defalut arg not in args will extend in args        self.names = names        self.args  = args    def search(self, path):        ignore   = False        srcfiles = files = os.listdir(path)        # ignore case mode so upper all file names, search names         if 'i' in self.args or '--ignore' in self.args:            ignore = True             files  = [f.upper( ) for f in files]               self.names  = [n.upper( ) for n in self.names]         searchname = self._match_return_names(self.names)        filenames  = searchname(path, files)        for file in srcfiles:            srcname = os.path.join(path, file)             # Dicition whether subdir if True into subdir            if os.path.isdir(srcname):                self.dcount += 1                 self.search(srcname)            else:                 self.fcount += 1            if ignore:                 file = file.upper( )            if 'v' in self.args or '--verbose' in self.args:                 self._tryprint(srcname)            '''            if 'm' in self.args or '--maxdepth' in self.args:                depth = args.index()            '''            if file in filenames:                if 's' in self.args or '--size' in self.args:                     srcname = self._get_size(srcname) + ' ' + srcname                 if 'f' in self.args  or '--file' in self.args\                    and os.path.isfile(srcname):                        continue                 elif 'd' in self.args or '--dir' in self.args\                    and os.path.isdir(srcname) :                         continue                self.result.append(srcname)          if 'c' in self.args or '--count' in self.args:             return self.result, self.fcount, self.dcount        else:             return self.result      def _match_return_names(self, patterns):        def __match_return_names(path, files):            result = [ ]            for pattern in patterns:                result.extend(fnmatch.filter(files, pattern))            return result        return __match_return_names                def _tryprint(self, arg):         try:            print(arg)        except UnicodeEncodeError:             print(arg.encode('utf-16'))     def _get_size(self, srcname):        lst = ['Bytes', 'KB     ', 'MB     ', 'GB     ', 'TB     ', 'PB     ']        try:             bytes = os.path.getsize(srcname)        except OSError:             return ('Error this file maybe Damage or not exists!\nNone')        if bytes == 0:            return ('0.00' + ' ' + lst[0])        else:             i = int(math.log(bytes, 1024))             return ('%.3f' + ' ' + lst[i]) % (bytes / 1024 ** i) class Modify_Search(Search):     tmp = [ ]     def __init__(self, time_mod, times, names=None, args=[]):        Search.__init__(self, names, args)        self.time_mod = time_mod        self.times    = times * 60     def modify_search(self, path) :        search_time = time.time( ) - self.times        for file in os.listdir(path):             srcname = os.path.join(path, file)             try:                 m_time  = os.path.getmtime(srcname)            except OSError:                 m_time = 0             if os.path.isdir(srcname):                 self.modify_search(srcname)              if self.time_mod == '--cmin':                if self.names is not None:                    self.tmp.append(self.search(path))                    if srcname in self.tmp and m_time > search_time:                        self.result.append(srcname)                else:                     if '-' in self.args:                         if m_time > search_time:                             self.result.append(srcname)                      elif '+' in self.args:                         if search_time > m_time:                             self.result.append(srcname)                     else:                         if search_time == m_time:                             self.result.append(srcname)         return self.resultif __name__ == '__main__':    modify = Modify_Search('--cmin', 1)    search = modify.modify_search('/home/jack')    for s in search:         print(s)      '''    start  = time.clock( )      search = Search(['text'], ['--ignore', '--count', '--size', '--dir'])    print(search.search('/home/jack'))    finish = time.clock( ) - start     if len(result) > 2:        retult, fcount, dcount = result        fcount = 'Files: %i'     % fcount         dcount = 'Directors: %i' % dcount     else:                 fcount = dcount = '-' * 12    print('RESULT:--------Finished at %.3f--------%s--%s\n' % (finish, fcount, dcount))    for r in result[0]:        search._tryprint(r)    '''

评论关闭