Добавление даты и времени при использовании json.dump? - PullRequest
0 голосов
/ 26 июня 2019

Привет. В настоящее время я выводю вывод изображения матрицы на кадр следующим образом.Я

with open(os.path.join('logs', 'frame_{0}_keypoints.json'.format(str(frame_number).zfill(12))).format(frame_dict), 'w') as outfile:
   json.dump(my_dict, outfile)

С этим я могу получить, json файлов на кадр, с форматом frame_000000000001_keypoints, мне было интересно, есть ли способ добавить метку времени в журналы ??например, как 20190607T220005 YearMonthDayTimeinHoursMinutesSeconds ??

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

В моем ответе предполагается, что вы хотите добавить метку времени в my_dict.

import json
import time


class TimeStampAdderEncoder(json.JSONEncoder):
    def encode(self, obj):
        obj['timestamp'] = time.time()
        return json.JSONEncoder().encode(obj)


my_dict = {'key': 3}
my_dict_as_str = json.dumps(my_dict, cls=TimeStampAdderEncoder)
print(my_dict_as_str)

выход

{"key": 3, "timestamp": 1561542873.109698}
0 голосов
/ 26 июня 2019

Если вы хотите иметь выходной файл .json с этим форматом frame_ 20190607T220005_keypoints, вы можете использовать:

import datetime 
now = datetime.datetime.now()   

now_isoFormat = now.isoformat() # GET - 2019-06-26T09:20:30.943730

now_custom_isoFormat = "{YEAR}{MONTH}{DAY}T{HOUR}{MINUTES}{SECONDS}".format(
    YEAR=now.year,
    MONTH=now.month,
    DAY=now.day,
    HOUR=now.hour,
    MINUTES=now.minute,
    SECONDS=now.second) # GET - 2019626T092030

with open(os.path.join('logs', 'frame_{0}_keypoints.json'.format(now_custom_isoFormat)).format(frame_dict), 'w') as outfile:
       json.dump(my_dict, outfile)

Если вы хотите сохранить номер кадра:

with open(os.path.join('logs', 'frame_{date}_keypoints_{frame}.json'
        .format(date=now_custom_isoFormat,
                frame=str(frame_number).zfill(12)))
                  .format(frame_dict), 'w') as outfile:
    json.dump(my_dict, outfile)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...