如何将os.stat_result转换为对象的JSON?

时间:2019-04-11 18:19:09

标签: json python-3.x encoding

我知道json.dumps可用于将变量转换为JSON表示形式。遗憾的是python3的类os.stat_result的转换是一个字符串,由表示类实例值的数组组成。

>>> import json
>>> import os
>>> json.dumps(os.stat('/'))
'[16877, 256, 24, 1, 0, 0, 268, 1554977084, 1554976849, 1554976849]'

但是,我更希望将其转换为os.stat_result并转换为JSON作为对象。 我该如何实现?

问题似乎是os.stat_result没有.__dict__东西。

看到结果:

 >>> import os
 >>> str(os.stat('/'))
 'os.stat_result(st_mode=16877, st_ino=256, st_dev=24, st_nlink=1, st_uid=0, st_gid=0, st_size=268, st_atime=1554977084, st_mtime=1554976849, st_ctime=1554976849)'

让我希望有一种快速的方法可以将python类实例(例如`os.stat_result“)转换为作为对象的JSON表示形式。

虽然是JSON,但结果是

2 个答案:

答案 0 :(得分:1)

  

但是我更希望将其转换为要转换为对象的JSON的os.stat_result。我该如何实现?

如果用JSON表示您的字典有键st_modest_ino等,那么答案是..手动。

答案 1 :(得分:0)

如gst所述,手动将是这样:

def stat_to_json(fp: str) -> dict:
    s_obj = os.stat(fp)
    return {k: getattr(s_obj, k) for k in dir(s_obj) if k.startswith('st_')}