Python 공부정리 - 주피터 노트북과 json 파일
사실 주피터 노트북은 일종의 개발용 도구지 파이썬의 기능이 아니다.
하지만 여러모로 유용한 기능을 제공하므로 한 번 다루어 보자
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 파일이 생긴 것을 알 수 있다.