8 个 Python 实用脚本,收藏备用

脚本写的好 , 下班下得早!程序员的日常工作除了编写程序代码 , 还不可避免地需要处理相关的测试和验证工作 。
例如 , 访问某个网站一直不通 , 需要确定此地址是否可访问 , 服务器返回什么 , 进而确定问题在于什么 。完成这个任务 , 如果一味希望采用编译型语言来编写这样的代码 , 实践中的时间和精力是不够的 , 这个时候就需要发挥脚本的神奇作用!
毫不夸张的说 , 能否写出高效实用的脚本代码 , 直接影响着一个程序员的幸福生活[下班时间] 。下面整理 8 个实用的 Python 脚本 , 需要的时候改改直接用 , 建议收藏!
1.解决 linux 下 unzip 乱码的问题 。import osimport sysimport zipfileimport argparses = '\x1b[%d;%dm%s\x1b[0m' def unzip(path): file = zipfile.ZipFile(path,"r") if args.secret: file.setpassword(args.secret) for name in file.namelist(): try: utf8name=name.decode('gbk') pathname = os.path.dirname(utf8name) except: utf8name=name pathname = os.path.dirname(utf8name) #print s % (1, 92, ' >> extracting:'), utf8name #pathname = os.path.dirname(utf8name) if not os.path.exists(pathname) and pathname != "": os.makedirs(pathname) data = https://www.isolves.com/it/cxkf/yy/Python/2019-10-09/file.read(name) if not os.path.exists(utf8name): try: fo = open(utf8name, "w") fo.write(data) fo.close except: pass file.close()def main(argv): ###################################################### # for argparse p = argparse.ArgumentParser(description='解决unzip乱码') p.add_argument('xxx', type=str, nargs='*',help='命令对象.') p.add_argument('-s', '--secret', action='store',default=None, help='密码') global args args = p.parse_args(argv[1:]) xxx = args.xxx for path in xxx: if path.endswith('.zip'): if os.path.exists(path): print s % (1, 97, ' ++ unzip:'), path unzip(path) else: print s % (1, 91, ' !! file doesn't exist.'), path else: print s % (1, 91, ' !! file isn't a zip file.'), pathif __name__ == '__main__': argv = sys.argv main(argv)2.统计当前根目录代码行数 。# coding=utf-8import osimport time# 设定根目录basedir = './'filelists = []# 指定想要统计的文件类型whitelist = ['cpp', 'h']#遍历文件, 递归遍历文件夹中的所有def getFile(basedir): global filelists for parent,dirnames,filenames in os.walk(basedir): for filename in filenames: ext = filename.split('.')[-1] #只统计指定的文件类型 , 略过一些log和cache文件 if ext in whitelist: filelists.Append(os.path.join(parent,filename))#统计一个的行数def countLine(fname): count = 0 # 把文件做二进制看待,read. for file_line in open(fname, 'rb').readlines(): if file_line != '' and file_line != 'n': #过滤掉空行 count += 1 print (fname + '----' , count) return countif __name__ == '__main__' : startTime = time.clock() getFile(basedir) totalline = 0 for filelist in filelists: totalline = totalline + countLine(filelist) print ('total lines:',totalline) print ('Done! Cost Time: %0.2f second' % (time.clock() - startTime))3.扫描当前目录和所有子目录并显示大小 。import osimport sys try: directory = sys.argv[1] except IndexError: sys.exit("Must provide an argument.")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) in os.walk(directory):for file in files:filename = os.path.join(path, file) dir_size += os.path.getsize(filename) fsizeList = [str(round(fsizedicr[key] * dir_size, 2)) + " " + key for key in fsizedicr] if dir_size == 0: print ("File Empty") else: for units in sorted(fsizeList)[::-1]:print ("Folder Size: " + units)4.将源目录240天以上的所有文件移动到目标目录 。import shutilimport sysimport timeimport osimport argparseusage = 'python move_files_over_x_days.py -src [SRC] -dst [DST] -days [DAYS]'description = 'Move files from src to dst if they are older than a certain number of days. Default is 240 days'args_parser = argparse.ArgumentParser(usage=usage, description=description)args_parser.add_argument('-src', '--src', type=str, nargs='?', default='.', help='(OPTIONAL) Directory where files will be moved from. Defaults to current directory')args_parser.add_argument('-dst', '--dst', type=str, nargs='?', required=True, help='(REQUIRED) Directory where files will be moved to.')args_parser.add_argument('-days', '--days', type=int, nargs='?', default=240, help='(OPTIONAL) Days value specifies the minimum age of files to be moved. Default is 240.')args = args_parser.parse_args()if args.days < 0: args.days = 0src = https://www.isolves.com/it/cxkf/yy/Python/2019-10-09/args.src # 设置源目录dst = args.dst # 设置目标目录days = args.days # 设置天数now = time.time() # 获得当前时间if not os.path.exists(dst): os.mkdir(dst)for f in os.listdir(src): # 遍历源目录所有文件 if os.stat(f).st_mtime


推荐阅读