替换单个文件中的多个文本值

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)