Я новичок в Python (Использование версии 2.7).
Я пытаюсь принять данные мобильного датчика в формате Json через скрипт Python. Скрипт хранит данные в текстовом файле. Следующее является частью моих данных Json.
{"sensor":"Accelerometer","time":1540532851987,"dataZ":"8.2821044921875"}
{"sensor":"Accelerometer","time":1540532852088,"dataZ":"8.162399291992188"}
{"sensor":"Accelerometer","time":1540532852191,"dataZ":"9.026702880859375"}
Не могу понять значение значения "время":. Как я могу преобразовать его в обычное время? Я пробовал следующее
import json
import datetime
with open("acc.json") as data_file:
my_dict = [json.loads(line) for line in data_file]
for acce in my_dict:
date_time_str = str(acce['time'])
date_time_obj = datetime.datetime.strptime(date_time_str, '%Y-%m-%d %H:%M: %S.%f')
print('Date:', date_time_obj.date())
print('Time:', date_time_obj.time())
print('Date-time:', date_time_obj)
##print(datetime.datetime.utcfromtimestamp(acce['time']).strftime('%Y-%m-%d %H:%M:%S'))
Что дает мне ошибку
$python mytest4.py
File "mytest4.py", line 11, in <module>
date_time_obj = datetime.datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:
%S.%f')
File "/usr/lib/python2.7/_strptime.py", line 325, in _strptime
(data_string, format))
ValueError: time data '1540532851987' does not match format '%Y-%m-%d
%H:%M:%S.%f'
EDIT:
Ни одна из упомянутых тем не касается следующего вместе
1. Несколько временных меток, полученных в виде объекта Json в формате UTC.
2. Формат содержит 13 цифр, в отличие от примеров, обсуждаемых с
меньшее количество цифр.
3. Найден поток на основе object_hook , но он слишком сложный
для меня.
Наконец-то я смог потренироваться с частичной помощью другого потока.
Я передаю окончательный код здесь на тот случай, если кому-то понадобится.
import json
import datetime
with open("acc.json") as data_file:
my_dict = [json.loads(line) for line in data_file]
for acce in my_dict:
epoch_time = str(acce['time'])
# get first 10 digits
leading = str(epoch_time)[0: 10]
# get last 3 digits
trailing = str(epoch_time)[-3:]
# print timestamp with milliseconds
print datetime.datetime.fromtimestamp(float(leading)).strftime('%m/%d/%Y -- %H:%M:%S.') + ('%s' % int(trailing))
OUTPUT:
10/26/2018 -- 11:17:31.987
10/26/2018 -- 11:17:32.88
10/26/2018 -- 11:17:32.191