| 副标题[/!--empirenews.page--] 脚本写的好,下班下得早!程序员的日常工作除了编写程序代码,还不可避免地需要处理相关的测试和验证工作。 
 例如,访问某个网站一直不通,需要确定此地址是否可访问,服务器返回什么,进而确定问题在于什么。完成这个任务,如果一味希望采用编译型语言来编写这样的代码,实践中的时间和精力是不够的,这个时候就需要发挥脚本的神奇作用! 好不夸张的说,能否写出高效实用的脚本代码,直接影响着一个程序员的幸福生活[下班时间]。下面整理 8 个实用的 Python  脚本,需要的时候改改直接用,建议收藏! 1.解决 linux 下 unzip 乱码的问题。 import os import sys import zipfile import argparse s = 'x1b[%d;%dm%sx1b[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 = 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.'), path if __name__ == '__main__':  argv = sys.argv  main(argv) 
 2.统计当前根目录代码行数。 # coding=utf-8 import os import 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 count if __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)) 
 (编辑:宣城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |