2017-11-03 136 views
0

我正在開發一個開源腳本,用於使用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

回答

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

相關問題