学过编程的都知道,除了要写代码,测试也是很重要的环节。大家都只听说程序员小哥哥的头发是稀有的东西,那如果测试的速度变快岂不是可以早早下班?今天小编就为大家带来几个Python中几个实用的脚本。
1.解决 linux 下 unzip 乱码的问题。
importosimportsysimportzipfileimportargparses='\x1b[%d;%dm%s\x1b[0m'defunzip(path): file=zipfile.ZipFile(path,"r") ifargs.secret: file.setpassword(args.secret) fornameinfile.namelist(): try: utf8name=name.decode('gbk') pathname=os.path.dirname(utf8name) except: utf8name=name pathname=os.path.dirname(utf8name) #prints%(1,92,'>>extracting:'),utf8name #pathname=os.path.dirname(utf8name) ifnotos.path.exists(pathname)andpathname!="": os.makedirs(pathname) data=file.read(name) ifnotos.path.exists(utf8name): try: fo=open(utf8name,"w") fo.write(data) fo.close except: pass file.close()defmain(argv): ###################################################### #forargparse p=argparse.ArgumentParser(description='解决unzip乱码') p.add_argument('xxx',type=str,nargs='*',\help='命令对象.') p.add_argument('-s','--secret',action='store',\default=None,help='密码') globalargs args=p.parse_args(argv[1:]) xxx=args.xxx forpathinxxx: ifpath.endswith('.zip'): ifos.path.exists(path): prints%(1,97,'++unzip:'),path unzip(path) else: prints%(1,91,'!!filedoesn\'texist.'),path else: prints%(1,91,'!!fileisn\'tazipfile.'),pathif__name__=='__main__': argv=sys.argv main(argv)
2.统计当前根目录代码行数。
importos importsys try: directory=sys.argv[1] exceptIndexError: sys.exit("Mustprovideanargument.") dir_size=0 fsizedicr={'Bytes':1, 'Kilobytes':float(1)/1024, 'Megabytes':float(1)/(1024*1024), 'Gigabytes':float(1)/(1024*1024*1024)} for(path,dirs,files)inos.walk(directory): forfileinfiles: filename=os.path.join(path,file) dir_size+=os.path.getsize(filename) fsizeList=[str(round(fsizedicr[key]*dir_size,2))+""+keyforkeyinfsizedicr] ifdir_size==0:print("FileEmpty") else: forunitsinsorted(fsizeList)[::-1]: print("FolderSize:"+units)
3.扫描当前目录和所有子目录并显示大小。
importos importsys try: directory=sys.argv[1] exceptIndexError: sys.exit("Mustprovideanargument.") dir_size=0 fsizedicr={'Bytes':1, 'Kilobytes':float(1)/1024, 'Megabytes':float(1)/(1024*1024), 'Gigabytes':float(1)/(1024*1024*1024)} for(path,dirs,files)inos.walk(directory): forfileinfiles: filename=os.path.join(path,file) dir_size+=os.path.getsize(filename) fsizeList=[str(round(fsizedicr[key]*dir_size,2))+""+keyforkeyinfsizedicr] ifdir_size==0:print("FileEmpty") else: forunitsinsorted(fsizeList)[::-1]: print("FolderSize:"+units)
4.将源目录240天以上的所有文件移动到目标目录。
importshutil importsys importtime importos importargparse usage='pythonmove_files_over_x_days.py-src[SRC]-dst[DST]-days[DAYS]' description='Movefilesfromsrctodstiftheyareolderthanacertainnumberofdays.Defaultis240days' args_parser=argparse.ArgumentParser(usage=usage,description=description) args_parser.add_argument('-src','--src',type=str,nargs='?',default='.',help='(OPTIONAL)Directorywherefileswillbemovedfrom.Defaultstocurrentdirectory') args_parser.add_argument('-dst','--dst',type=str,nargs='?',required=True,help='(REQUIRED)Directorywherefileswillbemovedto.') args_parser.add_argument('-days','--days',type=int,nargs='?',default=240,help='(OPTIONAL)Daysvaluespecifiestheminimumageoffilestobemoved.Defaultis240.') args=args_parser.parse_args() ifargs.days<0: args.days=0 src=args.src#设置源目录 dst=args.dst#设置目标目录 days=args.days#设置天数 now=time.time()#获得当前时间 ifnotos.path.exists(dst): os.mkdir(dst) forfinos.listdir(src):#遍历源目录所有文件 ifos.stat(f).st_mtime<now-days*86400:#判断是否超过240天 ifos.path.isfile(f):#检查是否是文件 shutil.move(f,dst)#移动文件
5.扫描脚本目录,并给出不同类型脚本的计数。
importos importshutil fromtimeimportstrftime logsdir="c:\logs\puttylogs" zipdir="c:\logs\puttylogs\zipped_logs" zip_program="zip.exe" forfilesinos.listdir(logsdir): iffiles.endswith(".log"): files1=files+"."+strftime("%Y-%m-%d")+".zip" os.chdir(logsdir) os.system(zip_program+""+files1+""+files) shutil.move(files1,zipdir) os.remove(files)
以上就是Python中有5个实用的脚本。更多Python学习推荐:PyThon学习网教学中心。