У меня есть JSON-файл, который выглядит следующим образом:Python как обновить JSON файл
{
"files": [
{
"nameandpath": "/home/test/File1.zip",
"MD5": "e226664e39dc82749d05d07d6c3078b9",
"name": "File1"
},
{
"nameandpath": "/home/test/File2.zip",
"MD5": "dbb11b2095c952ff1d4b284523d3085f",
"name": "File2"
}
]
}
Я хочу обновить только две строки nameandpath и MD5, когда условие будет истинным. Условие состоит в том, что если проверенный файл присутствует в файле JSON: я обновлю строку, иначе я добавлю файл со своими 3 значениями.
{
"files": [
{
"nameandpath": "/home/test/File1.zip",
"MD5": "e226664e39dc82749d05d07d6c3078b9",
"name": "File1"
},
{
"nameandpath": "/home/test/File2.zip",
"MD5": "dbb11b2095c952ff1d4b284523d3085f",
"name": "File2"
}
# block added because the file tested wasn't present in json file
{
"nameandpath": "/home/test/File3.zip",
"MD5": "dbb11b2095c952ff1d4b284523d3085f",
"name": "File3"
}
]
}
Я не могу обновить существующие линии я не был в состоянии проверить добавление новых линий.
Не могли бы вы помочь мне?
Как я могу это сделать?
Мой код до сих пор:
# getting file name
# getting MD5 of the file
jsonfile = "/home/test/filesliste.json"
with open(jasonfile, "r+") as json_file:
data = json.load(json_file)
for tp in data['files']:
if tp['name'] == name:
if tp['MD5'] == fileMD5:
print("same MD5")
# adding this file to json file
else:
print("NOT THE same MD5")
# updating the file info into json file
Вам следует рассмотреть возможность использования другой хэш-функции, чем md5. Он считается сломанным. Хорошей альтернативой может быть SHA-2 или SHA-3. –
Я использую md5, потому что мне нужно проверить, является ли содержимое zip-файлов разными или нет, если они есть, я буду хранить zip и обновить файл jason, иначе я удалю zip-файл. любая идея, как я могу это сделать? – JamesJimmy
@ GeorgSchölly Не сломан. Он больше не считается достаточно безопасным для определенных случаев использования (например, хеширование паролей), но он по-прежнему является прекрасной хеш-функцией, и нет ничего плохого в том, чтобы использовать его для проверки целостности данных. – poke