IT story

파이썬에서 json.dump ()와 json.dumps ()의 차이점은 무엇입니까?

hot-time 2020. 9. 3. 23:47
반응형

파이썬에서 json.dump ()와 json.dumps ()의 차이점은 무엇입니까?


나는에서 검색 json.dump ()와 파이썬에서 json.dumps ()의 차이를 찾기 위해 공식 문서. 파일 쓰기 옵션과 관련이 있음이 분명합니다.
그러나 그들 사이의 세부적인 차이점은 무엇이며 어떤 상황에서 다른 사람보다 더 많은 이점이 있습니까?


문서가 말하는 것 외에는 추가 할 것이 거의 없습니다. JSON을 파일 / 소켓 등으로 덤프하려면 dump(). 문자열로만 필요한 경우 (인쇄, 구문 분석 등) 다음을 사용하십시오 dumps()(dump string)

이 답변에서 Antii Haapala가 언급했듯이 ensure_ascii동작 에는 약간의 차이가 있습니다. 이는 대부분 기본 write()함수가 작동 하는 방식으로 인해 전체 문자열이 아닌 청크로 작동하기 때문입니다. 이에 대한 자세한 내용은 답변을 확인하십시오.

json.dump()

obj를 JSON 형식의 스트림으로 fp (.write () 지원 파일 류 객체)로 직렬화

ensure_ascii가 False이면 fp에 기록 된 일부 청크는 유니 코드 인스턴스 일 수 있습니다.

json.dumps()

obj를 JSON 형식의 str으로 직렬화

ensure_ascii가 False이면 결과에 비 ASCII 문자가 포함될 수 있으며 반환 값은 유니 코드 인스턴스 일 수 있습니다.


s테이크 문자열 매개 변수 가있는 함수 . 나머지는 파일 스트림을 사용합니다.


에서 주목할만한 차이 파이썬 2는 당신이 사용하는 경우이다 ensure_ascii=False, dump(당신이 UTF-8없는 확장 문자와 8 비트 문자열을 사용하지 않는 한) 파일에 제대로 쓰기 UTF-8 인코딩 된 데이터를 것입니다 :

dumps다른 한편으로 ensure_ascii=False를 생성 할 수 있습니다 str또는 unicode당신이 문자열을 사용하는 어떤 종류에 따라 :

이 변환 표를 사용하여 obj를 JSON 형식의 str으로 직렬화하십시오. ensure_ascii가 False이면 결과에 ASCII가 아닌 문자가 포함될 수 있으며unicode 반환 값 instance 일 수 있습니다 .

(강조 내). 여전히 str인스턴스 일 수도 있습니다.

따라서 반환 값을 사용하여 어떤 형식이 반환되었는지 확인하지 않고 구조를 파일에 저장할 수 없습니다 unicode.encode.

물론 이것은 더 이상 8 비트 / 유니 코드 혼동이 없기 때문에 파이썬 3에서 더 이상 유효한 문제가 아닙니다.


에 관해서는 loadloads, load고려 전체 는 하나의 파일에서 여러 줄 바꿈 제한 JSON 문서를 읽고 사용할 수 없도록 한 JSON 문서가 될 파일을.


메모리 사용량과 속도.

호출 jsonstr = json.dumps(mydata)하면 먼저 메모리에 데이터의 전체 복사본을 만든 다음 file.write(jsonstr)디스크에 복사합니다. 따라서 이것은 더 빠른 방법이지만 저장할 데이터가 큰 경우 문제가 될 수 있습니다.

json.dump(mydata, file)'s'없이 호출 하면 데이터가 청크로 덤프되므로 새 메모리가 사용되지 않습니다. 그러나 전체 프로세스는 약 2 배 느립니다.

출처 : 나는의 소스 코드를 확인 json.dump()하고 json.dumps(), 또한 모두가 함께 시간을 측정 변형 테스트 time.time()와 htop의 메모리 사용량을보고.

참고 URL : https://stackoverflow.com/questions/36059194/what-is-the-difference-between-json-dump-and-json-dumps-in-python

반응형