2017-11-03 1 views
0

나는 boto3 python sdk를 사용하는 AWS 스냅 샷을위한 오픈 소스 스크립트 작업을하고 있습니다.변수에 저장된 함수의 결과를 문자열로 저장하려면 어떻게해야합니까?

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

내가 JSON의 결과를 저장하면 해당 함수 문자열을 저장하는 것이 아니라 그 함수의 결과 :

나는 기능을 포함 JSON을 반환하는 기능을 가지고있다.

어떻게하면 python3에서 해당 기능을 실행할 수 있습니까?

(내가 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 

미리 감사드립니다.

+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을 사용할 수있다.

관련 문제