我是python新手,我正在尝试从python os shell命令替换json文件中的文本/字符串。我得到了我想要的结果,但是它在json文件中附加了额外的空格/创建了一个新行。这基本上就是我想要完成的:我有一个静态json文件(add.json)
我在python中运行两个OS shell命令,并将输出存储到单独的文本文件中。
然后我想取这两个txt文件中的值,并替换
json文件中的两个字符串。
下面是我目前拥有的(为了简单起见,我用简单的命令替换了真正的aws cli命令)import os
import fileinput
cmd = 'hostname > host.txt'
cmd2 = 'echo mama > echo.txt'
os.system(cmd)
os.system(cmd2)
file = open('host.txt')
contents = file.read()
with open("out.json", "wt") as fout:
with open("add.json", "rt") as fin:
for line in fin:
fout.write(line.replace('dns',contents))
file2 = open('echo.txt')
contents2 = file2.read()
with open("out2.json", "wt") as fout2:
with open("out.json", "rt") as fin2:
for line in fin2:
fout2.write(line.replace('ip', contents2))
这就是它产生的结果:{
"Comment": "A new record set for the zone.",
"Changes": [
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "WildburritoPC
",
"Type": "A",
"TTL": 60,
"ResourceRecords": [
{
"Value": "mama
"
}
]
}
}
]
}
如您所见,在名称和值之后,它确实替换了值,但添加了一个新行并生成无效的json。
这是我要替换的文件中的值:{
"Comment": "A new record set for the zone.",
"Changes": [
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "dns",
"Type": "A",
"TTL": 60,
"ResourceRecords": [
{
"Value": "ip"
}
]
}
}
]
}
提前谢谢你的回答。我知道我上面所说的是非常肮脏的,我相信一定有更好/更干净的方法来完成我正在努力做的事情,但最终我知道我们都必须从某个地方开始,我甚至无法开始解释我对这个社区迄今所提供的所有帮助有多感激。