替换单个文件中的多个文本值
Replace multiple text values in a single file
Python 3 - 尝试 Cisco 路由器部署脚本。
我正在尝试替换输入值 'router-input.txt' 中的多个文本值。不幸的是,我不知道如何替换单个文件中的多个值。在下面代码 运行 的末尾,只输入了最后一个值 IOSOLD。
import fileinput
HOSTNAME = input("Hostname: ")
IOSCURRENT = input("Current IOS image: ")
IOSOLD = input("Old IOS image: ")
f = open("router-input.txt",'r')
filedata = f.read()
f.close()
newdata = filedata.replace("$HOSTNAME", HOSTNAME )
newdata = filedata.replace("$IOSCURRENT", IOSCURRENT )
newdata = filedata.replace("$IOSOLD", IOSOLD )
f = open('output.txt','w')
f.write(newdata)
f.close()
您继续编辑 filedata
并将其保存在 newdata
中。每次,您都会覆盖之前的更改。尝试:
newdata = filedata.replace("$HOSTNAME", HOSTNAME )
newdata = newdata.replace("$IOSCURRENT", IOSCURRENT )
newdata = newdata.replace("$IOSOLD", IOSOLD )
如果文件太大,读取文件并将其保存在内存中的效率会非常低。我可能会做这样的事情
search_replace_dict = {
"$HOSTNAME": 'HOSTNAME',
"$IOSCURRENT": 'IOSCURRENT',
"$IOSOLD": 'IOSOLD'}
with open("router-input.txt") as input_file, open('output.txt','w') as output_file:
for each_line in input_file:
for key, value in search_replace_dict.items():
each_line = each_line.replace(key, value)
output_file.write(each_line)
Python 3 - 尝试 Cisco 路由器部署脚本。 我正在尝试替换输入值 'router-input.txt' 中的多个文本值。不幸的是,我不知道如何替换单个文件中的多个值。在下面代码 运行 的末尾,只输入了最后一个值 IOSOLD。
import fileinput
HOSTNAME = input("Hostname: ")
IOSCURRENT = input("Current IOS image: ")
IOSOLD = input("Old IOS image: ")
f = open("router-input.txt",'r')
filedata = f.read()
f.close()
newdata = filedata.replace("$HOSTNAME", HOSTNAME )
newdata = filedata.replace("$IOSCURRENT", IOSCURRENT )
newdata = filedata.replace("$IOSOLD", IOSOLD )
f = open('output.txt','w')
f.write(newdata)
f.close()
您继续编辑 filedata
并将其保存在 newdata
中。每次,您都会覆盖之前的更改。尝试:
newdata = filedata.replace("$HOSTNAME", HOSTNAME )
newdata = newdata.replace("$IOSCURRENT", IOSCURRENT )
newdata = newdata.replace("$IOSOLD", IOSOLD )
如果文件太大,读取文件并将其保存在内存中的效率会非常低。我可能会做这样的事情
search_replace_dict = {
"$HOSTNAME": 'HOSTNAME',
"$IOSCURRENT": 'IOSCURRENT',
"$IOSOLD": 'IOSOLD'}
with open("router-input.txt") as input_file, open('output.txt','w') as output_file:
for each_line in input_file:
for key, value in search_replace_dict.items():
each_line = each_line.replace(key, value)
output_file.write(each_line)