如何将变量中存储的函数的结果存储为字符串?
问题描述:
我正在开发一个开源脚本,用于使用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
在此先感谢!
答
如果我正确理解你,你有一个函数名被存储为一个字符串。如果是这种情况,您可以使用此处提供的解决方案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可以使用。
JSON不能包含函数。如果数据中有函数调用,那么它不是JSON。 –
它本身不是一个函数,而是一个函数的字符串,所以我需要该字符串的结果(这是一个函数)。 – CloudCoder1