40 lines
1.2 KiB
Python
Raw Normal View History

import sys
def replace_text_in_file(fileName: str, old_content: str, newContent: str) -> None:
"""
Replace text in a file within the specified range with new content.
:param fileName: The name of the file to modify.
:param startPos: The starting position of the range to replace.
:param endPos: The ending position of the range to replace.
:param newContent: The new content to replace the specified range with.
"""
with open(fileName, 'r') as file:
content = file.read()
# how many times old_content occurs in content
count = content.count(old_content)
# if count is not 1, then we can't replace the text
if count != 1:
# output error message to stderr and exit
print(f"Error: {old_content} occurs {count} times in {fileName}.", file=sys.stderr)
exit(-1)
# replace old_content with new_content
modified_content = content.replace(old_content, new_content)
with open(fileName, 'w') as file:
file.write(modified_content)
if __name__ == "__main__":
try:
file_name = sys.argv[1]
old_content = sys.argv[2]
new_content = sys.argv[3]
replace_text_in_file(file_name, old_content, new_content)
except Exception as e:
print(e, file=sys.stderr)
exit(-1)
exit(0)