python 替換尋找工具,閑暇之餘寫的,不足之處,見涼。

來源:互聯網
上載者:User
 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"   #Windows12 dir = "/home/www/blog.26wz.com/templates/2012/abc" #尋找所在目錄路徑  Linux13 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     #gbk23     find_str = find_str.encode('gb2312')24     replace_str = replace_str.encode('gb2312')25 else:26     #utf-827     find_str = find_str.encode('utf-8')28     replace_str = replace_str.encode('utf-8')    29 30 i=031 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+=139                 #複製檔案備份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.close58             59                 print filename_path60 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,技術碼農,有時間可交流。

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.