##############################python去除C注释rmanno-zz170719zz @ 2017-7-19REF:rman.3walkrmanno.py###############################!/usr/bin/env python# -*- coding:gb2312 -*-#zz# coding=gbk#   rman.2walkallfn#from __future__ import print_functionimport osimport sysimport reimport platformimport shutil## 1. python versiondef pr_ver():    print("Platform python_version:",platform.python_version())## 2. maindef main():    print("module name:",__name__)    pr_ver()    #zz# main test infos..    if(0 > 0):        print("argv number:",len(sys.argv))        for i in range(len(sys.argv)):            print(sys.argv[i])        if len(sys.argv)            print();            print("usage: %s srcdir dstdir" %(sys.argv[0]))    #zz# walk all file    if(0 > 0):        print("os.sep",os.sep)        # for list_all in os.walk(os.path.dirname("G:\\zzrd_dingwork\\zztool_bsp_cl\\python_funs\\rm_anno")):        # for list_all in os.walk("G:\\zzrd_dingwork\\zztool_bsp_cl\\python_funs\\rm_anno"):        for list_all in os.walk(os.path.abspath("dir_src")):            print(list_all)        print()    #zz# 0. help info    if len(sys.argv)        print()        print("usage: %s srcdir dstdir" % (sys.argv[0]))        print()        # return        exit(1)    else:        print("src[%s] ==> dest[%s]\n" % ( os.path.abspath(sys.argv[1]),os.path.abspath(sys.argv[2]) ) )    #zz# 1.print absolute path from a relative dir name    # dir_dest = os.path.abspath("dir_dest")    # dir_src = os.path.abspath("dir_src")    # print("src[%s] ==> dest[%s] !\n" % (dir_src,dir_dest) )    dir_src = os.path.abspath(sys.argv[1])    dir_dest = os.path.abspath(sys.argv[2])    print("src[%s] ==> dest[%s] !\n" % (dir_src,dir_dest) )        #zz# 2.walk all the files in the relative dir    for parents,dirs,files in os.walk(dir_src):        for fn in files:            if fn.endswith(".c") or fn.endswith(".h") or fn.endswith(".cc") or fn.endswith(".cpp"):                #zz# print(os.path.join(parents,fn))                #zz# print("%s%s%s" % (parents,os.sep,fn))                abs_src_fn = os.path.join(parents,fn)                abs_dst_fn = os.path.join(dir_dest,fn)                                #zz# os.makedirs("hello")                # shutil.copy(abs_src_fn,abs_dst_fn)                rm_anno_cfile(abs_src_fn,abs_dst_fn)    #zz# remove annotate example    # rm_anno_cfile()## 3. deal one filedef rm_anno_cfile(fn_src="fun_do_rty.c",fn_dest="fun_do_rty.c.txt"):    if not os.path.isfile(fn_src):        print("!!! File: %s, Not Exist" % fn_src)        return        #zz# 文件全路径 => 文件名 => 文件名无后缀    fn_filename = os.path.splitext(fn_src)[0]    fn_filetitle = os.path.basename(fn_filename)        #zz# 打开 in out 文件逐行处理    #zz# fn_dest = "new" + fn_filetitle + ".orig"    ff_out = open(fn_dest,"wb+")        ff_in = open(fn_src,"r")    list_in = ff_in.readlines()    ff_in.close()        #zz# 创建搜索用的,正则表达式    # re_anno = re.compile("//zz")    re_anno = re.compile("\s*//zz")    for line in list_in:        # 找到含有规定注释的行        res_anno = re_anno.search(line)        if Noneres_anno:            continue        else:            ff_out.write(line)    ff_out.close()      ## 0. run main as defaultif __name__ == "__main__" :    print("__main__ call!")    main()##############################
09-05 23:12