에 pickle.dumps 출력 쓰기 : 파이썬 3이 코드를 인쇄 트루에서나는 다음과 같은 코드가 파일
some_dict = {'a':0, 'b':1}
line = "some_dict_b = %s\n" % pickle.dumps(some_dict,2)
exec(line)
decoded_dict = pickle.loads(some_dict_b)
decoded_dict == some_dict
합니다. 파이썬 2 (2.7.8)에서 나는 exec 라인에 오류가 발생한다. 나는 덤프가 2.7에서 바이트 스트림을 반환하는 동안 str을 반환한다는 것을 안다.
입력 파일의 데이터를 분석 한 다음 특정 메모리 객체를 만들고 이러한 객체를 사용하는 python 스크립트를 작성해야하는 프로그램을 작성하고있다. 필자는 pickle.dumps()를 사용하여 스크립트 파일에 이러한 객체를 작성하고 위에서 스케치 한 아이디어에 따라 변수 선언 행에 삽입합니다. 하지만 파이썬에서이 코드를 실행 할 수 있어야합니다 2.
내가 한 파이썬 3 라인의 변수를 가져 각 백 슬래시가 제대로 탈출 유형 것을주의 :
>>> line
"some_dict_b = b'\\x80\\x02...
파이썬 2에서 난다면 :
>>> line
'some_dict_b = \x80\x02...
철저한 설명 주셔서 감사하지만 왜 파이썬 3에서 코드가 작동합니까? 객체의 문자열과 표현보기가 일치한다는 것은 단지 우연의 일치입니까? –
@ ErwinLavalliére : 문자열 표현이 없으면 (__str__ 메소드 없음) 대신'__repr__'이 사용됩니다. 그것이 전혀 효과가 있었다는 것은 우연의 일치였습니다. :-) –