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

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

问题描述:

我正在开发一个开源脚本,用于使用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())} 

这构建字典的代码是:

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

在此先感谢!

+0

JSON不能包含函数。如果数据中有函数调用,那么它不是JSON。 –

+0

它本身不是一个函数,而是一个函数的字符串,所以我需要该字符串的结果(这是一个函数)。 – CloudCoder1

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

+0

不,字面意思是datetime.datetime(2017,11,3,22,4,48,tzinfo = tzlocal())在里面,我需要这个结果。 – CloudCoder1

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