Я новичок в python, и то, что я пытаюсь сделать, это заменить текст/строку в json-файле из команды python os shell. Я несколько получаю результаты, которые ищу, но добавляет лишние пробелы/создает новую строку в json-файле. Это в основном то, что я пытаюсь выполнить:Python: Замените строку в json-файле, из команды оболочки python
- У меня есть статический файл JSon (add.json)
- Я бегу две команды OS оболочки внутри питона и хранения, что вывод в отдельных текстовых файлов ,
- Затем я хочу взять значения в этих двух файлах txt и заменить две строки в json-файле.
Ниже то, что я в настоящее время (чтобы сделать это просто я заменил истинную AWS команды консоли с простыми командами)
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"
}
]
}
}
]
}
Заранее спасибо за любые ответы. Я знаю, что то, что у меня выше, очень грязное, и я уверен, что должен быть лучший/более чистый способ выполнить то, что я пытаюсь сделать, но в конце концов я знаю, что мы все должны начать с чего-то, и я даже не могу начать чтобы объяснить, насколько я благодарен этому сообществу за всю помощь, которую он предоставил до сих пор.
Вы можете взглянуть на [json encoder] Python (https://docs.python.org/3/library/json.html), который преобразует JSON-данные в словари. После этого вы можете адаптировать этот словарь и записать его обратно в JSON-файл. – albert