⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ff2csv.py

📁 subversion-1.4.3-1.tar.gz 配置svn的源码
💻 PY
字号:
#!/usr/bin/env python# -*- Python -*-"""Transform find-fix.py output into Excellable csv."""__date__ = "Time-stamp: <2003-10-16 13:26:27 jrepenning>"[13:30]__author__ = "Jack Repenning <jrepenning@collab.net>"import getoptimport inspectimport osimport os.pathimport pydocimport reimport shutilimport stringimport sysimport time# Long options and their usage strings; "=" means it takes an argument.# To get a list suitable for getopt.getopt(), just do##   [x[0] for x in long_opts]## Make sure to sacrifice a lamb to Guido for each element of the list.long_opts = [    ["doc",             """Optional, print pydocs."""],    ["help",            """Optional, print usage (this text)."""],    ["verbose",         """Optional, print more progress messages."""],    ]help    = 0verbose = 0me = os.path.basename(sys.argv[0])DATA_FILE = "http://subversion.tigris.org/iz-data/query-set-1.tsv"def main():    """Run find-fix.py with arguments du jour for drawing prettymanager-speak pictures."""     global verbose    try:        opts, args = getopt.getopt(sys.argv[1:], "", [x[0] for x in long_opts])    except getopt.GetoptError, e:        print "Error: ", e.msg        shortusage()        print me + " --help for options."        sys.exit(1)    for opt, arg in opts:        if opt == "--help":            usage()            sys.exit(0)        elif opt == "--verbose":            verbose = 1        elif opt == "--doc":            pydoc.doc(pydoc.importfile(sys.argv[0]))            sys.exit(0)    # do something fruitful with your life    if len(args) == 0:        args = ["query-set-1.tsv", "core-history.csv"]        print ("ff2csv %s %s" % args)    if len(args) != 2:        print "%s: Wrong number of args." % me        shortusage()        sys.exit(1)    if os.system("curl " + DATA_FILE + "> " + args[0]):        os.system("wget " + DATA_FILE)    outfile = file(args[1], "w")    outfile.write("Date,found,fixed,inval,dup,other,remain\n")    totalsre = re.compile("totals:.*found= +([0-9]+) +"                          "fixed= +([0-9]+) +"                          "inval= +([0-9]+) +"                          "dup= +([0-9]+) +"                          "other= +([0-9]+) +"                          "remain= *([0-9]+)")    for year in ("2001", "2002", "2003", "2004"):        for month in ("01", "02", "03", "04", "05", "06", "07", "08",                      "09", "10", "11", "12"):            for dayrange in (("01", "08"),                             ("08", "15"),                             ("15", "22"),                             ("22", "28")):                if verbose:                    print "searching %s-%s-%s to %s" % (year,                                                        month,                                                        dayrange[0],                                                        dayrange[1])                ffpy = os.popen("python ./find-fix.py --m=beta "                                "%s %s-%s-%s %s-%s-%s"                                % (args[0],                                   year, month, dayrange[0],                                   year, month, dayrange[1]))                if verbose:                    print "ffpy: ", ffpy                line = ffpy.readline()                if verbose:                    print "initial line is: ", line                matches = totalsre.search(line)                if verbose:                    print "initial match is: ", matches                while line and not matches:                    line = ffpy.readline()                    if verbose:                        print "%s: read line '%s'" % (me, line)                    matches = totalsre.search(line)                    if verbose:                        print "subsequent line is: ", line                ffpy.close()                if verbose:                    print "line is ", line                if matches.group(1) != "0" \                   or matches.group(2) != "0" \                   or matches.group(3) != "0" \                   or matches.group(4) != "0" \                   or matches.group(5) != "0":                                        outfile.write("%s-%s-%s,%s,%s,%s,%s,%s,%s\n"                                  % (year, month, dayrange[1],                                     matches.group(1),                                     matches.group(2),                                     matches.group(3),                                     matches.group(4),                                     matches.group(5),                                     matches.group(6),                                     ))                elif matches.group(6) != "0":                    # quit at first nothing-done week                    # allows slop in loop controls                    break    outfile.close()                def shortusage():  "Print one-line usage summary."  print "%s - %s" % (me, pydoc.synopsis(sys.argv[0]))def usage():  "Print multi-line usage tome."  shortusage()  print '''%s [opts] [queryfile [outfile]]Option keywords may be abbreviated to any unique prefix.Option order is not important.Most options require "=xxx" arguments:''' % me  for x in long_opts:      padding_limit = 18      if x[0][-1:] == '=':          print "   --" + x[0][:-1],          padding_limit = 19      else:          print "   --" + x[0],      print (' ' * (padding_limit - len(x[0]))), x[1]if __name__ == "__main__":  main()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -