40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
![]() |
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)
|