ITPUB??ì3
ITPUB论坛 » 动态语言 » 呵呵,刚学,俺写了一个去掉代码中注释的工具,python写的

新一届的微软MVP评选已经开始,欢迎各位推荐!

标题: 呵呵,刚学,俺写了一个去掉代码中注释的工具,python写的
离线 ziliu0305
中级会员



精华贴数 1
个人空间 0
技术积分 926 (2012)
社区积分 67 (4244)
注册日期 2004-3-12
论坛徽章:0
      
      

发表于 2007-12-28 10:13 
呵呵,刚学,俺写了一个去掉代码中注释的工具,python写的

秀一下,欢迎赐教!!!
# -*- coding: cp936 -*-
"""
this function can visit every file in all the folders of the specific dir
"""
import os,string
def search(uDir, aDir):
    aFiles = os.listdir(uDir)
    i = 0
    while i < len(aFiles):
        aFile = aFiles
        if os.path.isfile(os.path.expanduser(uDir + aFile)):
            print 'this is a file, name is ' + aFile
            delNotes(os.path.expanduser(uDir + aFile), os.path.expanduser(aDir + aFile))
        else:
            nextuDir = uDir + aFile + '/'
            nextaDir = aDir + aFile + '/'
            print 'the folder ' + uDir
            if not os.path.exists(os.path.expanduser(nextaDir)):
                os.mkdir(os.path.expanduser(nextaDir))
                print nextaDir
            search(nextuDir, nextaDir)
        i = i + 1
        
"""
visit every file of the specific directory, and delete thhose parts used for noting the logic
"""
import os,string
def delNotes(upFile, aimFile):
    rFlag = 0
    try:
        f = open(upFile, 'r')
        f2 = open(aimFile, 'w')
    except IOError:
        print 'open ' + upFile + ' error'
        sys.exit()
    print ""
    print "Now begin to deal with the file, its name is " + upFile
    print "***************************************************"
        
    line = f.readline()
    while line:
        # 首先查找多行注释标记 /* */
        fm = string.find(line, '/*')
   
        # 找到多行注释标记
        if fm != -1:    #查找到/*
            rFlag = 1
            fm = string.find(line, '*/')    #继续查找*/
            if fm != -1:    #若找到,则置标志为true,继续读下一行
                rFlag = 0
                #line = f.readline()
            else:   #否则,继续向下寻找 */,直到找到为止
                line = f.readline()
                while line:
                    fm = string.find(line, '*/')
                    if fm != -1: # 找到*/,置标志为true,退出循环继续向下处理
                        rFlag = 0
                        break
                    line = f.readline()
                if not line:
                    print '文件标注不正确,退出'
        # 若没有多行注释标记,则查找单行注释标记//
        else:
            fm = string.find(line, '//')
            fm1 = string.find(line, 'System.out.print(')
            if fm == -1 and fm1 == -1 and ( not rFlag):    #本行不存在单行注释,则直接输出
                f2.write(line)
            elif fm != -1 and fm1 == -1 and ( not rFlag):
                f2.write(line[:fm] + '\n')
               
        # 继续读下一行
        line = f.readline()
    f.close()
    f2.close()

if __name__ == "__main__":
    search('/xx/','/yy/')


只看该作者    顶部
离线 nesta102
初级会员



精华贴数 0
个人空间 0
技术积分 6 (130132)
社区积分 0 (1345346)
注册日期 2007-4-12
论坛徽章:0
      
      

发表于 2008-1-4 09:37 
可以考虑使用正则表达式来写会简单一些


只看该作者    顶部
离线 ziliu0305
中级会员



精华贴数 1
个人空间 0
技术积分 926 (2012)
社区积分 67 (4244)
注册日期 2004-3-12
论坛徽章:0
      
      

发表于 2008-1-4 15:39 
哦,这到是没想到,等我试试呵


只看该作者    顶部
离线 emacsnw



精华贴数 0
个人空间 0
技术积分 9 (95092)
社区积分 2 (32124)
注册日期 2008-3-11
论坛徽章:0
      
      

发表于 2008-3-11 10:17 
你这个会把 "/* this is not a comment */" 当作 "" 了吧?


只看该作者    顶部
离线 VagrantLee
监督员


来自 广东省东莞市
精华贴数 0
个人空间 0
技术积分 8807 (138)
社区积分 11603 (131)
注册日期 2002-11-18
论坛徽章:74
玉兔每日论坛发贴之星2008北京奥运纪念徽章:柔道2008北京奥运纪念徽章:柔道2008北京奥运纪念徽章:帆船2008北京奥运纪念徽章:排球
2008北京奥运纪念徽章:摔跤2008北京奥运纪念徽章:举重2008北京奥运纪念徽章:足球2008北京奥运纪念徽章:跆拳道2008北京奥运纪念徽章:击剑2008北京奥运纪念徽章:羽毛球

发表于 2008-3-12 17:06 
路過,頂!


__________________
很高兴认识从事SAP的朋友....让我们一起学习,共同进步....QQ:1876283(请注明)
欢迎访问我的博客:SAP学习&休闲中心欢迎你
只看该作者    顶部
在线/呼叫 cnhzlt
好好学习


精华贴数 1
个人空间 2646
技术积分 3039 (494)
社区积分 27513 (40)
注册日期 2004-8-7
论坛徽章:184
      
      

发表于 2008-3-16 14:34 
用正则表达式最简单最快


__________________
缺钱啊缺钱
只看该作者    顶部
离线 zhour560
超级斑竹


精华贴数 0
个人空间 0
技术积分 2002 (799)
社区积分 72 (4072)
注册日期 2005-9-23
论坛徽章:8
授权会员     
      

发表于 2008-4-15 19:29 
小强强呀


__________________
锐不可挡惊天地,气宇不凡乃周郎!MSN:zhour560@yahoo.com.cn,Email:zhour560@yahoo.com.cn
只看该作者    顶部
离线 挪鸡鸭
超级菜鸟



精华贴数 0
个人空间 0
技术积分 110 (15294)
社区积分 11 (9989)
注册日期 2001-11-16
论坛徽章:0
      
      

发表于 2008-4-20 20:43 
为啥不用htmlparser


__________________
我挪~!挪~!挪~!我挪鸡鸭~!
只看该作者    顶部
在线/呼叫 justforregister
SAP


精华贴数 1
个人空间 10
技术积分 40565 (18)
社区积分 10990 (143)
注册日期 2005-6-10
论坛徽章:80
现任管理团队成员开发板块每日发贴之星生肖徽章2007版:猪开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星
      

发表于 2008-4-24 22:36 
nice job


__________________
只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问