Language/Python

Python 공부정리 - 주피터 노트북과 json 파일

Tarel 2023. 2. 7. 16:29

사실 주피터 노트북은 일종의 개발용 도구지 파이썬의 기능이 아니다.

하지만 여러모로 유용한 기능을 제공하므로 한 번 다루어 보자

 

1. 시작전 설정사항

주피터노트북에는 라인넘버가 없기 때문에 이를 켜주어야 한다.

Ctrl + , 로 설정에 들어가서 line number를 검색해 Notebook에서 설정해 준다.

 

2. 파일생성

 

VS-Code에서 주피터노트북 파일을 만들 때는 다른 파일들과 다르게 파일 -> 새 파일 을 통해서 만들어야 한다.

이 때, 2번째 사진의 jupyter Notebook을 눌러서 생성하고 먼저 저장부터 해주자

 

이 주피터 노트북의 장점은 마크다운 언어와 파이썬 언어를 같이 사용할 수 있다는 것에 있다.

물론 주석기능이 있지만 주석은 한계가 명확한 반면 마크다운을 활용하면 영상이나 사진도 넣을 수 있다.

 

주피터노트북을 시작한 모습

이런식으로 블록으로 생성된다.

오른쪽 아래에 Python이라고 되어 있는데, 이걸 통해서 마크다운으로 바꾸어 줄 수 있다.

이 블록에 코드를 적고 ctrl+enter를 누르면 안의 코드를 실행하고 그 결과물을 바로 아래에 보여준다.

 

왼쪽 위의 +코드를 통해서 새로운 블록을 추가해 줄 수 있다.

 

블록을 선택하고 ESC를 누른다음, M을 누르면 마크다운으로, Y를 누르면 파이썬 코드로 자유롭게 바꿔줄 수 있다.

 

3. 코드작성

 

위 블록을 마크다운 블록을 하고 마크다운에 맞게 코드를 작성한다음 Ctrl + Enter를 누르면

 

이처럼 깃허브 리드미 파일 만드는것 처럼 바뀌는 것을 볼 수 있다.

 

이번엔 파이썬 블록을 써보자

 

print('Hello World!') 를 입력하고 Ctrl + Enter를 입력하자 실행되는 모습을 알 수 있다.

 

 

 

 

4. 단축키

주피터 노트북은 많은 단축키를 지원하여 개발의 편의성을 지원하고 있다.

단축키는 다음과 같다.


셀 선택 모드에서

a : 위에 새로운 셀 추가
b : 아래에 새로운 셀 추가

c : 셀 복사하기
v : 셀 붙여넣기
x : 셀 잘라내기
dd : 셀 삭제하기
p : 셀 아래에 붙여넣기

o : 실행결과 열기/닫기
m : Markdown으로 변경
y : Code로 변경
Shift + m : 선택 셀과 아래 셀과 합치기
Ctrl + s 또는 s  : 파일 저장
Enter  : 선택 셀의 코드 입력 모드로 돌아가기

코드 입력 모드에서


Ctrl + Enter : 입력 셀 실행
Shift + Enter : 입력 셀 실행 후 아래 셀로 이동 (없으면 새로운 셀 추가)
Alt + Enter : 입력영역 실행 후 아래 새로운 영역 추가


Ctrl + a : 선택 셀의 코드 전체 선택
Ctrl + z : 선택 셀 내 실행 취소
Ctrl + y : 선택 셀 내 다시 실행
Ctrl + / : 커서 위치 라인 주석처리


Shift + Ctrl + - : 커서 위치에서 셀 둘로 나누기

 

5. 디버그

블록 왼쪽에 보면 실행버튼에 자세히가 있는데 여기에 디버그 셀이 있다.

중단점을 먼저 만들고 이걸 실행하면 디버그를 할 수 있다.

 

6. 주의사항

이건 사람마다 다를 수 있는데, 일부 환경에서는 위 사진 처럼 다른 블록에 있는 함수를 사용할 수 없다.

그러나 다른 환경에서는 다른 블록에 있는 함수를 사용할 수 있다.

 

이유는 의외로 단순한데 위 코드를 실행하지 않았기 때문이다.

 

다른 블록에 있는 함수나 변수를 사용하려면 그 블록을 먼저 실행을 해주어야 한다.

 

또한 파일을 한 번 끄고 다시 열었을 때, 모두 실행을 한 번 눌러줘야 한다.

 

7. 특이사항

파이썬에서 콘솔을 출력할 때는 print(변수명) 이런식으로 사용해야 한다.

그런데 주피터노트북에는 위 사진처럼 변수명만 적어줘도 된다. (프린트 문도 사용할 수 있다.)

 

 

 

8. json 파일 가져오기

 

test.json파일을 준비했다.

{
    "ionic":{
        "price": 20000000,
        "year" : "2022"
    },
    "genesis":{
        "price": 80000000,
        "year" : "2021"
    },
    "bmw":{
        "price":150000000,
        "year" : "2019"
    }
}

이 파일을 주피터노트북에서 파이썬 코드를 사용해서 불러와보자

 

import json

file = open('./test.json', 'r', encoding='utf-8')
jsondata = json.load(file)
print(json.dumps(jsondata))

file.close()

우선 json을 임포트 해야 한다.

그리고 파일 오픈을 통해서 가져오고 그렇게 가져온 파일을 jsondata 변수에 담고 출력한다.

참고로 print(jsondata) 라고만 적어도 된다.

그런데 파일이 다 1줄로만 나온다.

이걸 처음 작성했던 json 처럼 정렬되게 나오게 하고 싶다면 다음 옵션을 추가한다.

indent='\t'

이제 제대로 나온다.

 

단, 한글의 경우 깨질 수 있는데, 그럴 경우 print 코드를 아래로 바꾸어 주자

print(json.dumps(jsondata, indent='\t', ensure_ascii=False))

 

9. json 파일 조작하기

이제 위 json 파일의 값을 가져와 보자

 

genesis의 price의 값을 가져온다.

정상적으로 잘 출력된다.

 

 

이번엔 가격을 바꾸어보았다.

아무튼 무진장 큰 수로 바꾼다음 출력했는데 역시 정상적으로 반영되었다.

 

10. json 파일 저장

with open('./test2.json', 'w', encoding='utf-8') as file:
    # 한글 인코딩은 ensure_ascii=False 를 추가할 것
    json.dump(jdata, file, indent = '\t', ensure_ascii=False)

파일이 있는 경로에 test2.json 파일을 만드는 코드다.

마찬가지로 한글 깨짐을 방지하려면 위 코드의 주석처럼 해주자

 

11. json 파일 쓰기

아래와 같은 내용을 가진 파일을 만들어보자

파일 명은 supercar.json 이다.

{
	"audi": {
		"price": 300000000,
		"year": 2020
	},
	"porsche": {
		"price": 150000000,
		"year": 2015
	}
}

먼저 supercar라는 상위 딕셔너리를 만들고 audi, porsche라는 하위 딕셔너리를 만든다.

그리고 필요한 키와 벨류값을 넣어준다.

 

json 파일을 새로 만들 때는 dump 메소드를 사용하고 파일을 읽어올 때는 dumps 메소드를 사용한다.

한 글자 차이기 때문에 잘 기억해 놔야 한다.

코드를 실행하면 json 파일이 생긴 것을 알 수 있다.