# -*- coding: utf8 -*-
#!/usr/bin/env python
import argparse
import os
 
def replacestring(old, new, path):
    f = open(path, "r")
    content = f.read()
    f.close()
    f = open(path, "w")
    content = content.replace(old, new)
    f.write(content)
    f.close()
 
parser = argparse.ArgumentParser(description='Find a string and replace it in files')
parser.add_argument('-R','-r', action='store_true', \\
help='walk all paths recursely', dest='R')
parser.add_argument('path', metavar='path', nargs=1, \\
help='path affected by the replacement')
parser.add_argument('oldstring', metavar='oldstring', nargs=1, \\
help='oldstring for replacement')
parser.add_argument('newstring', metavar='newstring', nargs=1, \\
help='newstring for replacement')
args = parser.parse_args()
 
path = args.path[0]
old = args.oldstring[0]
new = args.newstring[0]
 
if not os.path.exists(path):
    print "Path not found/not accessible"
    exit()
 
if os.path.isfile(path):
    replacestring(old, new, path)
else:
    for dirpath, dirnames, filenames in os.walk(path):
        for file in filenames:
            replacestring(old, new, os.path.join(dirpath, file))
        if not args.R: break