文本内容检索替换

需求

1
python file_replace.py old_str new_str filename

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import sys

# 获取变量
old_str = sys.argv[1]
new_str = sys.argv[2]
filename = sys.argv[3]

f = open(filename, 'r+') # 以读写模式打开
data = f.read()

new_data = data.replace(old_str, new_str)
old_count = data.count(old_str)

f.seek(0)
f.truncate()
f.write(new_data) # 写入替换后的内容

print(f'{filename}中的{old_str}替换为{new_str},共计{old_count}处。')

验证

测试文本test.txt如下:

1
2
3
4
abcddd a  fdg bc ahellobcf dgfdhgdh
ddddfhhello daf
dhsdsdccc a baba
hellodfgsdg

执行脚本:

1
2
$ python file_replace.py 'hello' 'wow' test.py
test.txt中的hello替换为wow,共计3处。

执行脚本后的文本内容如下:

1
2
3
4
abcddd a  fdg bc awowbcf dgfdhgdh
ddddfhwow daf
dhsdsdccc a baba
wowdfgsdg