最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 利用Python脚本过滤文件中的注释

    正文概述    2020-04-07   162

    确保对模块, 函数, 方法和行内注释使用正确的风格,Python中的注释有单行注释和多行注释。如果希望去除文件中所有注释,如何做呢?

    利用Python脚本过滤文件中的注释

    Python中的注释:

    Python中单行注释以 # 开头,例如::

    # 这是一个注释
    print("Hello, World!")

    多行注释用三个单引号 ''' 或者三个双引号 """ 将注释括起来,例如:

    #!/usr/bin/python3 
    '''
    这是多行注释,用三个单引号
    这是多行注释,用三个单引号 
    这是多行注释,用三个单引号
    '''
    print("Hello, World!")



    使用Python脚本快速去除文件中的注释:

    #!/usr/bin/python 
    # -*- coding: GBK -*- 
    #writer:xmnathan 
    #py文件去注释 
    import re 
    import os 
    import ConfigParser 
    Python='CleanNote'
    def ReadIni(path,section,option):#文件路径,章节,关键词 
      #读取ini
      cf=ConfigParser.ConfigParser() 
      cf.read(path) 
      value=cf.get(section,option)#如果用getint()则直接读取该数据类型为整数 
      return value 
    def IsPassLine(strLine): 
      #是否是可以忽略的行 
      #可忽略行的正则表达式列表 
      RegularExpressions=["""/'.*#.*/'""","""/".*#.*/"""", 
                """/'/'/'.*#.*/'/'/'""","""/"/"/".*#.*/"/"/""""]
      for One in RegularExpressions: 
        zz=re.compile(One) 
        if re.search(zz,strLine)==None: 
          continue
        else: 
          return True#有匹配 则忽略 
        return False
    def ReadFile(FileName): 
      #读取并处理文件 
      fobj=open(FileName,'r') 
      AllLines=fobj.readlines() 
      fobj.close() 
      NewStr='' 
      LogStr='/n%20s/n'%(FileName.split('//')[-1])#输出的日志 
      nline=0
      for eachiline in AllLines: 
        index=eachline.find('#')#获取带注释句‘#'的位置索引 
        if index==-1 or nline<3 or IsPassLine(eachline): 
          if eachiline.strip()!='':#排除纯空的行 
            NewStr=NewStr+eachiline 
        else: 
          if index!=0: 
            NewStr=NewStr+eachiline[:index]+'/n'#截取后面的注释部分 
            LogStr+="ChangeLine: %s/t%s"%(nline,eachline[index:]) 
        nline+=1
      return NewStr,LogStr 
    def MakeCleanFile(SrcPath,DescPath,FileList): 
      fLog=open(DescPath+'//'+'CleanNoteLog.txt','w') 
      for File in FileList: 
        curStr,LogStr=ReadFile(SrcPath+'//'+File) 
        fNew=open(DescPath+'//'+File,'w') 
        fNew=write(curStr) 
        fNew.close() 
        fLog.write(LogStr) 
      fLog.close() 
    def Main(): 
      #从ini获取源文件夹及目标文件夹路径 
      IniPath=os.getcwd()+'//'+PtName+'.ini'
      SrcPath=ReadIni(IniPath,PyName,'SrcPath')#源文件夹 
      DescPath=ReadIni(IniPath,PyName,'DescPath')#目的文件夹 
      #如果目的文件夹不存在,创建之 
      if not os.path.exists(DescPath): 
        os.makedirs(DescPath) 
      FileList=[] 
      for files in os.walk(SrcPath): 
        for FileName in files[2]: 
          if FileName.split('.')[-1]=='py': 
            FileList.append(FileName) 
      MakeCleanFile(SrcPath,DescPath,FileList) 
    if __name__=='__main__': 
      Main() 
      print '>>>End<<<'
      os.system('pause')

    ps:配置文件CleanNote.ini的格式

    [CleanNote] 
    SrcPath=E:/test 
    DescPath=E:/test/newfiles

    批量去除指定源文件夹中的py文件的注释,并生成拷贝与指定目的文件夹


    起源地下载网 » 利用Python脚本过滤文件中的注释

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元