从 json.loads 检索到的纪元时间中删除 ms

Remove ms from epoch time retrieved with json.loads

我有一个竖线分隔的文件,其中一个字段包含一些 JSON 格式的信息:

1|2|{"StartTime":1572300507000,"EndTime":1547506800474,"DeleteTime":1572217199000}|4     

为了检索 JSON 值,我使用了 json.loads。

波纹管是我的代码的一部分:

import sys,json,time


with open(sys.argv[1], 'r') as file:
    for line in file:
        fields = line.split('|')
        print time.strftime('"%Y%m%d%H%M%S"', time.localtime(json.loads(fields[2])['StartTime'])

这没有按预期工作,因为纪元时间也有 ms。最简单的解决方案是用 1000 划分纪元并执行如下操作:

time.strftime('"%Y%m%d%H%M%S"', time.localtime(json.loads(fields[2])['StartTime']/1000)

这当然不起作用,因为我收到以下错误:

TypeError: unsupported operand type(s) for /: 'time.struct_time' and 'int'

执行此操作的正确方法是什么?我也在尝试找到最有效的方法,因为该文件有数百万行。

你应该除以这个数字,你的错误是因为括号不匹配:

d = '''{"StartTime":1572300507000,"EndTime":1547506800474,"DeleteTime":1572217199000}'''
time.strftime('"%Y%m%d%H%M%S"', time.localtime(json.loads(d)['StartTime']/1000))

输出:

'"20191028230827"'