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

Python 如何将存储在变量中的函数结果存储为字符串?,python,python-3.x,amazon-web-services,amazon-ec2,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执行该函数 奇怪的是,当我打印口述时间时,它显示的是正确的 这就是我的字典的样子: {'snap-05c84': datetime.datetime(2017,

我正在编写一个开源脚本,用于使用boto3 python sdk的AWS快照

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

datetime.datetime(2017, 11, 3, 21, 2, 27, tzinfo=tzlocal())
当我存储来自json的结果时,它存储该函数字符串,而不是该函数的结果

如何让python3执行该函数

奇怪的是,当我打印口述时间时,它显示的是正确的

这就是我的字典的样子:

{'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

提前感谢

如果我理解正确,您有一个以字符串形式存储的函数名。如果是这种情况,您可以使用此处提供的解决方案来使用该函数。

您可以使用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-可以使用。

JSON不能包含函数。如果数据中有函数调用,那么它不是JSON。它本身不是函数,而是一个函数字符串,所以我需要该字符串的结果,它是函数。不,实际上dict中有datetime.datetime2017,11,3,22,4,48,tzinfo=tzlocal,我需要它的结果。