Search 程序如果寫的不好,希望大家能夠教導我,,[Python]代码#!
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) '''
相关内容
- Backup 程序如果寫的不好,希望大家能夠教導我,,[Pyt
- 哥&寂寞,,[Python]代码fr
- 一个简单的类封装,提供简单的web操作,类封装web操作
- 使用gevent多线程下载豆瓣音乐,gevent豆瓣,使用gevent多线
- 找出一组数据的峰值,找出一组数据峰值,#-*- coding=
- Python清理文件及文件夹,python清理文件夹,#!c:\\python
- 挑选文件夹里面宽大于300图片,挑选文件夹300,唉,老是
- 把金额小写转换成大写的Python代码,小写python,def IIf(
- 用Python解压缩文件,Python解压缩文件,#rardir.pyim
- 使用python进行adsl拨号,pythonadsl拨号,[Python]代码im
评论关闭