71 lines
1.8 KiB
Python
71 lines
1.8 KiB
Python
#!/usr/bin/python
|
|
|
|
import sys
|
|
import getopt
|
|
import argparse
|
|
import os
|
|
import os.path
|
|
|
|
def check_file_exists(file_path) :
|
|
check_file = os.path.exists(file_path)
|
|
if not check_file:
|
|
print('File not found: ', file_path)
|
|
sys.exit(2)
|
|
|
|
def read_file(file_path) :
|
|
content = ''
|
|
try:
|
|
with open(file_path) as f:
|
|
content=f.read()
|
|
except IOError:
|
|
print("Failed reading file: ", file_path)
|
|
sys.exit(3)
|
|
return content
|
|
|
|
def main(argv):
|
|
argParser = argparse.ArgumentParser()
|
|
argParser.add_argument("-i", "--ifile", help="Input file")
|
|
argParser.add_argument("-o", "--ofile", help="Output file")
|
|
argParser.add_argument("-p", "--pfile", help="Pattern file")
|
|
argParser.add_argument("-r", "--rfile", help="Replace file")
|
|
#argParser.add_argument("-i", "--int", type=int, help="your numeric age ")
|
|
|
|
args = argParser.parse_args()
|
|
#print("args=%s" % args)
|
|
|
|
print("Patching file: ", args.ifile)
|
|
print("as output file: ", args.ofile)
|
|
|
|
check_file_exists(args.ifile)
|
|
check_file_exists(args.ofile)
|
|
check_file_exists(args.pfile)
|
|
check_file_exists(args.rfile)
|
|
|
|
# Read search and replace patterns
|
|
old_text = read_file(args.pfile)
|
|
new_text = read_file(args.rfile)
|
|
# print("Pattern: ", old_text)
|
|
# print("Replace: ", new_text)
|
|
|
|
# Read input file
|
|
old_content = read_file(args.ifile)
|
|
|
|
# Do the actual search and replace
|
|
new_content = old_content.replace(old_text, new_text)
|
|
|
|
# Write output file
|
|
try:
|
|
with open(args.ofile, "w") as f:
|
|
f.write(new_content)
|
|
except IOError:
|
|
print("Failed writing file: ", args.ofile)
|
|
sys.exit(3)
|
|
|
|
if old_content == new_content:
|
|
print("Warning! The given pattern was not found in input file.")
|
|
else:
|
|
print("success!")
|
|
|
|
if __name__ == "__main__":
|
|
main(sys.argv[1:])
|