zoukankan      html  css  js  c++  java
  • python 替换查找工具,闲暇之余写的,不足之处,见凉。

     1 #-*- coding: UTF-8 -*-
     2 import sys
     3 import string
     4 import time
     5 print sys.version
     6 import re
     7 import os,shutil,platform,datetime
     8 
     9 starttime = datetime.datetime.now()
    10 
    11 #dir = "E:\\Users\\wang\\Downloads\\templates\\2011"   #Windows
    12 dir = "/home/www/blog.26wz.com/templates/2012/abc" #查找所在目录路径  Linux
    13 ext = "htm" #查找文件后缀
    14 #多行
    15 find_str = u"""abc""" #找查的字符串
    16 replace_str = u"""中国人""" #替换的字符串口
    17 
    18 #编码判断
    19 try:
    20     content.decode('utf-8')
    21 except Exception, e:
    22     #gbk
    23     find_str = find_str.encode('gb2312')
    24     replace_str = replace_str.encode('gb2312')
    25 else:
    26     #utf-8
    27     find_str = find_str.encode('utf-8')
    28     replace_str = replace_str.encode('utf-8')    
    29 
    30 i=0
    31 for parent,dirnames, filenames in os.walk(dir):
    32     for filename in filenames:
    33         if ext == filename.rsplit('.',1)[1]:
    34             filename_path = os.path.join(parent, filename)
    35             content = file(filename_path,'r').read()
    36 
    37             if content.find(find_str) > -1 :
    38                 i+=1
    39                 #复制文件备份
    40                 sysstr = platform.system()
    41                 if(sysstr == "Windows"):
    42                     src = os.getcwd() + filename_path.replace(dir.rsplit('\\',1)[0],'')
    43                     targetDir =  src.rsplit('\\',1)[0]
    44                 elif(sysstr == "Linux"):
    45                     src = os.getcwd() + filename_path.replace(dir.rsplit('/',1)[0],'')
    46                     targetDir =  src.rsplit('/',1)[0]
    47                 else:
    48                     exit()
    49                     
    50                 if (os.path.exists(targetDir) == False):
    51                     os.makedirs(targetDir)
    52                     shutil.copy(filename_path, src)        
    53             
    54                 content = content.replace(find_str,replace_str)
    55                 file_write = open(filename_path, 'w')
    56                 file_write.write(content)
    57                 file_write.close
    58             
    59                 print filename_path
    60 
    61 
    62             
    63 print "file count:" + str(i) #打印出文件替换的个数
    64   
    65 
    66 endtime = datetime.datetime.now()
    67 print str((endtime - starttime).seconds) + ' sencond' #执行时间

    说明:

    一、支持Windows、Linux平台。

    二、暂时不支持多行替换,还没有找到好的方法以,如果哪位网友想出,麻烦告知。

    三、当模板文件众多,需要替换字符时,挺管用的,用过一些替换工具(如:TextCrawler、等),发现对gb2312  utf-8编码不是很友好。

    四、QQ:271059875,技术码农,有时间可交流。

  • 相关阅读:
    一句话搞定qt4 开发环境
    一句话随笔.....
    es6学习笔记(二)
    Vue学习笔记(一)
    es6学习笔记(一)
    Java中的一些基础概念
    你了解Java中String的substring函数吗?
    Ajax请求与浏览器缓存
    QCon杭州2012技术开发大会感受
    为什么选择使用Sass而不是Less?
  • 原文地址:https://www.cnblogs.com/wang123/p/2828455.html
Copyright © 2011-2022 走看看