如何将存储在变量中的函数的结果存储为字符串?

时间:2017-11-03 22:10:42

标签: python python-3.x amazon-web-services amazon-ec2

我正在使用boto3 python sdk开发AWS快照的开源脚本。

我有一个返回json的函数,它包含一个函数:

datetime.datetime(2017, 11, 3, 21, 2, 27, tzinfo=tzlocal())

当我存储json的结果时,它存储该函数字符串,而不是该函数的结果。

如何让python3执行该功能?

(奇怪的是,当我打印dict时间时,它显示正确)

这就是我的dict的样子:

{'snap-05c84': datetime.datetime(2017, 11, 3, 22, 4, 48, tzinfo=tzlocal()), 'snap-08bcb': datetime.datetime(2017, 11, 3, 21, 2, 27, tzinfo=tzlocal())}

构建dict的代码是:

for snap in snaps['Snapshots']:
  snap_id=snap['SnapshotId']
  start_time=snap['StartTime']
  snap_times[snap_id]=start_time

提前致谢!!!

2 个答案:

答案 0 :(得分:1)

您可以使用eval,执行代码并获取结果。

但是,正如我正在查看您的示例,为什么将该datetime对象作为字符串?可能你希望在那里有价值。您可以使用处理程序:

import datetime
import json

def datetime_handler(x):
    if isinstance(x, datetime.datetime):
        return x.isoformat()
    raise TypeError("Unknown type")

json.dumps(data, default=datetime_handler)

如果您不喜欢isoformat,可以使用strftime

答案 1 :(得分:0)

如果我理解正确,您有一个存储为字符串的函数名称。如果是这种情况,您可以使用此处Calling a function of a module from a string with the function's name提供的解决方案来使用该功能。