Welcome, guest | Sign In | My Account | Store | Cart
import os
import fnmatch
import sys
import shutil
import re

def usage():
   
print """
Usage:
    %s <work_dir> <search_regex> <replace_with> <glob_pattern> [backup]
    """
% (os.path.basename(sys.argv[0]))

def find_replace(directory, search_pattern, replacement, glob_pattern, create_backup=False):
   
for path, dirs, files in os.walk(os.path.abspath(directory)):
       
for filename in fnmatch.filter(files, glob_pattern):
            pardir
= os.path.normpath(os.path.join(path, '..'))
            pardir
= os.path.split(pardir)[-1]
           
print '[%s]' % pardir,
            filepath
= os.path.join(path, filename)
           
#backup orig file
           
if create_backup:
                backup_path
= filepath + '.bak'
               
print 'DBG: creating backup', backup_path
                shutil
.copyfile(filepath, backup_path)
               
           
with open(filepath) as f:
                data
= f.read()
               
           
with open(filepath, "w") as f:
               
print 'DBG: replacing in file', filepath
               
# s = s.replace(search_pattern, replacement)
                data
= re.sub(search_pattern, replacement, data)
                f
.write(data)

if __name__ == '__main__':
   
if len(sys.argv) == 1:
        usage
()
        sys
.exit(-1)
       
    work_dir
= sys.argv[1]
    search_regex
= sys.argv[2]
    replacement
= sys.argv[3]
    glob_pattern
= sys.argv[4]
    dobackup
= (len(sys.argv) > 4) and sys.argv[5].lower() in ['backup', '-b']
   
# findReplace(".", "<span[^>]*>", "<div>", "*.html")
    find_replace
(work_dir, search_regex, replacement, glob_pattern, dobackup)

History