일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 연습문제
- 데이터베이스
- html/css
- 머신러닝
- 순환신경망
- 자바 실습
- c언어
- 상속
- 정보처리기사실기
- ChatGPT
- 개발일기
- 딥러닝
- CSS
- 정보처리기사필기
- 중학수학
- 파이썬
- 컴퓨터비전
- JSP
- SQL
- 자바스크립트심화
- JSP/Servlet
- 데이터분석
- 혼공머신
- rnn
- 컴퓨터구조
- 중학1-1
- 자바
- JDBC
- 디버깅
- 자바스크립트
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
인터넷으로 데이터 주고받기 - JSON 데이터 다루기 및 바이너리 데이터 문자열로 바꾸기 본문
인터넷으로 주고받는 데이터 형식은 다양하다. 예를 들어 이메일은 인터넷에서 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 공부를 해볼 것이다. 정처기 실기 과목에도 있으니 열심히 공부해야 할 것이다.
'프로그래밍 언어 > 파이썬' 카테고리의 다른 글
파이썬 데이터 분석 - 테스트 문제 풀기 (0) | 2024.12.23 |
---|---|
네트워크와 프로세스 간 통신 다루기 2 - SSL 서버 통신 및 여러 명 동시에 서버 접속하기 (1) | 2024.10.06 |
네트워크와 프로세스 간 통신 다루기 1 - 비동기 방식으로 프로그래밍하기 및 서버와 통신하는 게임 만들기 (0) | 2024.10.06 |
동시에 실행하기 - 스레드를 이용하여 병렬 처리하기 및 멀티 스레드 이용하기, 원하는 작업을 원하는 시간에 실행하기 (0) | 2024.10.06 |
운영체제 다루기 - 디버깅용 로그 남기기 및 터미널 프로그램 만들기, 시스템 정보 알아보기 (0) | 2024.10.06 |