12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #!/usr/bin/python
- from __future__ import print_function
- import sys
- import os
- import getopt
- def display_help():
- print('####################################################################')
- print('# #')
- print('# File: portable.py #')
- print('# Description: #')
- print('# - search and replace within a binary file #')
- print('# #')
- print('# Parameters: #')
- print('# -f, --file : target file #')
- print('# -s, --search : term to search for #')
- print('# Default is the base path for the python #')
- print('# executable that is running this script. #')
- print('# In Py2 that would be C:\\Python27 #')
- print('# -r, --replace : replace with this #')
- print('# default is ".." #')
- print('# #')
- print('# example: #')
- print('# portable.py -f <target_file> -s <search_term> -r <replace_term> #')
- print('# #')
- print('####################################################################')
- sys.exit(2)
- def main(argv):
- target = ''
- search = os.path.dirname(sys.executable)
- replace = '..'
- try:
- opts, args = getopt.getopt(argv,
- "hf:s:r:",
- ["file=", "search=", "replace="])
- except getopt.GetoptError:
- display_help()
- for opt, arg in opts:
- if opt == '-h':
- display_help()
- elif opt in ("-f", "--file"):
- target = arg
- elif opt in ("-s", "--search"):
- search = arg
- elif opt in ("-r", "--replace"):
- replace = arg
- if target == '':
- display_help()
- if sys.version_info >= (3, 0):
- search = search.encode('utf-8')
- replace = replace.encode('utf-8')
- f = open(target, 'rb').read()
- f = f.replace(search, replace)
- f = f.replace(search.lower(), replace)
- open(target, 'wb').write(f)
- if __name__ == "__main__":
- main(sys.argv[1:])
|