관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

인터넷으로 데이터 주고받기 - JSON 데이터 다루기 및 바이너리 데이터 문자열로 바꾸기 본문

프로그래밍 언어/파이썬

인터넷으로 데이터 주고받기 - JSON 데이터 다루기 및 바이너리 데이터 문자열로 바꾸기

huenuri 2024. 10. 7. 00:05

인터넷으로 주고받는 데이터 형식은 다양하다. 예를 들어 이메일은 인터넷에서 bASE64라는 데이터 형식으로 전송된다. 이번 장에서는 JSON, Base64 등의 인터넷 데이터를 다루는 모듈을 알아본다.


 

 

 

JSON 데이터를 다루려면? - json

JSON 데이터를 쉽게 처리하고자 사용하는 모듈이다.

 

다음은 개인정보를 JSON 형태의 데이터로 만든 myinfo.json 파일이다.

 

인터넷으로 얻은 이 파일을 읽어 파이썬에서 처리할 수 있도록 딕셔너리 자료형으로 만들려면 어떻게 해야 할까?


 

JSON 파일을 읽어 딕셔너리로 변환하려면 다음처럼 json 모듈을 사용하면 된다.

 

 

하지만 이 코드를 실행하는데 오류가 정말 많이 떠서 무척 어려웠다. 첫번째는 파일 경로를 지정할 때 현재 JSON 파일이 있는 위치에 지정해야 하는 것이다. 두 번째는 JSON의 경우 대개 UTF-8로 인코딩 되어 있기 때문에 이 옵션을 지정해야 열 수 있다.

JSON 파일을 읽을 때는 json.load(파일 객체)를 이용한다. 반대로 딕셔너리 자료형을 JSON 파일로 생성할 때는 json.dump(딕셔너리, 파일 객체)를 사용한다.

 

하지만 파일을 생성할 때는 utf-8을 지정하면 오류가 뜨므로 이 부분을 쓰지 말아야 한다.


 

 

 

 

바이너리 데이터를 문자열로 바꾸려면? - base64

바이너리 데이터를 문자열로 인코딩할 때 사용하는 모듈이다. 이때 인코딩한 문자열은 64개의 아스키 문자로 구성된다.

 

A 씨는 test.jpg라는 이미지 파일을 텍스트로 첨부하여 B 씨에게 전송하려 한다. 그러려면 이미지 파일을 Base64 형식으로 인코딩한 문자열로 바꾸는 img_to_string() 함수가 필요하다. 이와 함께 데이터를 수신한 B 씨는 Base64로 인코딩한 문자열을 원래 이미지로 바꾸는 string_to_img() 함수가 필요하다.

A 씨와 B씨가 이미지를 문자열 형식으로 주고받는 데 필요한 다음과 같은 형식의 img_to_string() 함수와 string_to_img() 함수를 만들려면 어떻게 해야 할까?

 

다음은 base64 모듈을 사용한 코드이다.

 

 

 

저장된 파일을 확인하고 싶었는데 이건 계속 오류가 뜨고 한참을 고민했으나 해결되지 않아 넘어가기로 했다. 책에도 이런 내용은 소개하고 있지 않았다.

 


 

 

 

학습을 마치고

인터넷으로 데이터를 주고받는 내용도 모두 마쳤다. 나머지 부분은 별로 중요하지 않은 내용이라 지금은 넘어가기로 했다. 어제와 오늘 하루 반나절에 걸쳐 파이썬 라이브러리를 공부해보았다. 고급 기능이 정말 많아서 지금은 잘 사용하지 않는 라이브러리도 많이 있었다.

그 내용은 나중에 개발에 대한 지식이 어느 정도 쌓일 때 더 공부해볼 생각이다. 기초 단계에 있는 지금은 이 정도로 충분한 것 같다. 이제 딥러닝 공부를 좀더 하고 이틀 동안은 SQL 공부를 해볼 것이다. 정처기 실기 과목에도 있으니 열심히 공부해야 할 것이다.