갬미의 성장일기
Day15 - VScode 디버깅 구성추가 | 파일 읽고쓰기, 예외처리 (python) 본문
오늘 배운 내용
- 디버깅 구성 추가
- 파일 읽고쓰기 (txt, binary, json)
- 예외처리
디버깅 구성 추가
일단 내가 현재 열고있는 작업영역을 닫아준다 (이때 작업 영역 구성 파일로 저장 - 아니오)
- 작업영역을 닫았다가 열면서 workspace에 이미 있는 디버깅 정보를 한번 날리는거임
작업하고 있는 폴더 선택!
작업 영역이 표시되고 디버깅 할 파일 열고 디버깅 실행 - 파이썬 선택
디버깅 오류남 일단 디버깅 끄고 - 디버깅 파일을 만들어야 함 -> 구성 (작업하고 있는 폴더 이름 - Lab)추가 선택
Lab 누르고 python 선택
json 파일이 생성되며 python에 대한 디버깅 정보가 생김
이미 json 파일이 있다면 여기부터 시작
장고 디버깅 추가하려면 -> 구성추가 클릭 -> python 클릭 ->장고 manage.py 경로 잡아 설정
python클릭
장고 클릭
경로 잡아주고 엔터 -> 장고 추가됨 (Flask도 추가함)- json 저장하고 다시 디버깅
디버깅 목록에 json파일에 추가한 정보다 생성된다
여기서 내가 디버깅 할 환경을 잡아주고 디버깅하면 잘됨!
VS Code를 많이 사용하는 이유
한 프로젝트 안에 여러가지 app, 플랫폼을 구성해야할 떄가 많다
한 프로젝트 안에서 여러개의 플랫폼 환경을 구성해서 디버깅하는 기능을 제공하기 때문에 vscode를 선호한다
매우매우 유용한 기능임!!
파일 읽고 쓰기
메모리에 있는 json 파일 loads, dumps
import json
jsonData1 = {
"empid" : 12345678,
"name" : '홍길동',
"info": [
{'date1' : '2022-01-21', 'home' : '서울시'},
{'dep' : '개발', 'email' : 'aaa@aaa.co.kr'}
]
}
resultData1 = json.dumps(jsonData1) # json으로 type은 str
# 오류
# tempdata = resultData1['empid'] # jsondata 에서 가져와야 함
print (type(resultData1))
# 디코딩 : 문자열을 json 파일 형식으로 변경 - 깨졌던 한글이 그대로 돌아옴
jsonData2 = json.loads(resultData1) # 문자열을 json파일로 바꾸기
resultData2 = json.dumps(jsonData1, indent = 4) # indent 기억하기
print (jsonData2)
print (resultData2) # indent 주면 정렬됨
# 반복문으로 email 정보 뺴기
info = jsonData2['info']
for data in info:
if 'email' in data.keys():
email = data['email']
temp = 0
txt파일 읽고 쓰기 - 4가지 방법
# 파일 열기 - 기본적으로 제공
# utf-8 : 다국어 제공
# fileName = open("파일명", mode = "", encoding = 'utf-8')
# mode : 읽기 r, 쓰기 w 또는 x, 내용 추가 a , 수정 +
# mode : 파일 형식도 지정해야 함 : t - 텍스트 형식의 파일, b = 이미지, 영상(binary file)
import os
import sys
os.getcwd() # 지금 경로 - 실제 파이썬이 실행되는 작업경로
# test = os.path.abspath(__file__) # 현재 경로의 파일 이름 (절대 경로)
# 작업경로 (최상위 디렉터리 Lab) - txt 경로 잡아줘야
fileName = open("Datalab/data.txt", mode = "rt", encoding = 'utf-8') # 현재 경로에 있는 data.txt를 read txt 모드, 다국어로 읽기
# 파일을 읽고 쓰고 나면 거의 대부분 close 기능을 호출 하는것을 습관화
# data1 = fileName.readline() # 엔터(\n)가 처음 나오는 곳까지 읽음 / 읽고 남겨두지 않음
# 문서 처음부터 끝까지 한줄씩 읽기
for i in fileName:
sys.stdout.write(i) # 출력할때 \n 빼고 한줄씩 읽고 쓰기만 하고 싶을때
fileName.close()
print()
print()
# 문서 처음부터 끝까지 한줄씩 읽기 readline()로 읽기
fileName2 = open("Datalab/data.txt", mode = "rt", encoding = 'utf-8') # 현재 경로에 있는 data.txt를 read txt 모드, 다국어로 읽기
line = None
while line != '':
line = fileName2.readline()
print (line, end = '') # end를 해주어야 \n이 두번들어가는것을 생약
fileName2.close()
print()
print()
# 문서 처음부터 끝까지 한줄씩 읽기 readlines()로 읽기
fileName3 = open("Datalab/data.txt", mode = "rt", encoding = 'utf-8') # 현재 경로에 있는 data.txt를 read txt 모드, 다국어로 읽기
lines = fileName3.readlines() # 문서를 한번에 읽어서 \n 기준으로 리스트로 저장
for line in lines:
print (line, end = '')
fileName3.close()
print()
print()
fileName4 = open("Datalab/data.txt", mode = "rt", encoding = 'utf-8') # 현재 경로에 있는 data.txt를 read txt 모드, 다국어로 읽기
for line in fileName4:
print (line, end = '')
fileName4.close()
tmp = 1
예외처리
참고 문서!
파이썬 코딩 도장: 38.1 try except로 사용하기
Unit 38. 예외 처리 사용하기 예외(exception)란 코드를 실행하는 중에 발생한 에러를 뜻합니다. 다음과 같이 10을 어떤 값으로 나누는 함수 ten_div가 있을 때 인수에 따라 정상으로 동작하기도 하고 에
dojang.io
# try : 정상일때 코드 수행
# exception : 예외가 발생했을때 코드 수행
# 옵션으로 finally -> 정상이든 예외든 꼭 실행해야 하는 것
# else : try 모두 끝나고 실행
# 꼭 실행해야 하는 경우인데 exception 이 발생하면 else 실행 안함
# try를 실행 하다가도 예외가 발생하면 except로 간다
try:
# fileName = open("data.txt", mode = "rt", encoding = 'utf-8')
fileName = open("Datalab/data.txt", mode = "rt", encoding = 'utf-8')
print ('정상')
except: #종합보험 - 모든 예외상황 처리하는 때
print ('비정상')
else: # try하고 오는곳 - except 일때 안옴
fileName.close()
print ('else 구문 실행됨')
finally: # try 또는 exception 발생해도 무조건 들르는 곳
print ('finally')
pass
# except 에외이름 - 특정 예외가 발생한 경우 실행됨 . 이때 예외 이름을 받아오려면 as를 해준다
# Exception - 모든 예외의 에러 메시지에 대하여
try:
fileName = open("data.txt", mode = "rt", encoding = 'utf-8')
except IndexError as ex: # as = 별칭
error = str(ex)
print ('IndexError')
except Exception as ex: # 다중 예외처리를 하고 마지막에 종합 예외처리를 함
error = str(ex)
print ('예외가 발생했습니다')
finally: # try 또는 exception 발생해도 무조건 들르는 곳
fileName.close()
문서 만들기
참고 문서!
[Python] 텍스트 파일 쓰기와 읽기 (writelines() 메소드, readlines() 메소드)
지난번 포스팅에서는 파일을 열고(open), 파일을 읽고(read), 쓰고(write), 닫기(close)를 하는 방법을 소개하였습니다. 이번 포스팅에서는 Python 에서 (1) 문자열로 이루어진 리스트를 텍스트 파일에
rfriend.tistory.com
# write 와 writelines 차이점 https://rfriend.tistory.com/524
with open('Datalab/data2.txt', mode = 'wt', encoding= 'utf-8') as fileName:
fileName.write('문서쓰기\n 여러줄?!') # 엔터 안쳐지고 들어감 writelines 도 같음
fileName.write('arqiuwjkdjjksfh')
# fileName.close() # with를 하는 경우 try except close 하지 않음
with open('Datalab/data3.txt', mode = 'wt', encoding= 'utf-8') as fileName:
fileName.writelines('문서쓰기\n 여러줄?!')
# fileName.close() # with를 하는 경우 try except close 하지 않음
tmp = 1
이미지 (binary 파일) 읽어오기
# 이미지 처리 : binary 처리
# 문자일때만 encoding utf-8
# 이미지 앍기
with open('Datalab/rose.jpg','rb') as fileName:
byteProcess = fileName.read(1)
while byteProcess != b'':
print (byteProcess)
byteProcess = fileName.read(1)
byteData = [1,2,3,4,25]
# 바이너리 변환하여 파일 만들기 - 확장자 : txt 제외한 아무거나, data 범위 : 0~255
with open('Datalab/bytedata.bin', mode = 'wb') as fileName:
fileName.write(bytes(byteData))
# 예외처리로 파일 쓰기
try:
fileName = open('Datalab/bytedata.bin', mode = 'wb')
fileName.write(bytes(byteData))
except Exception as ex :
print ('error: ',str(ex))
else:
fileName.close()
# 예외처리로 파일 읽기
try :
fileName = open('Datalab/rose.jpg', mode = 'rb')
byteProcess = None
while byteProcess != b'':
print (byteProcess)
byteProcess = fileName.read(1)
except Exception as ex :
print ('error: ',str(ex))
json 파일 (불러와 읽기, 작성하고 생성하기)
참고 문서!
[Python] Python으로 JSON 데이터 읽고 쓰기 (Read and Write JSON data by Python)
json.org의 JSON 소개 내용에 따르면, JSON (JavaScript Object Notation) 은 XML, YAML 과 함께 효율적으로 데이터를 저장하고 교환(exchange data)하는데 사용하는 텍스트 데이터 포맷 중의 하나입니다. JSON은..
rfriend.tistory.com
# 파일 내에서 json 파일 형식을 만든다면 -> loads
# json file을 불러오는거라면 -> load
# loads /load & dumps / dump 차이 : https://rfriend.tistory.com/474
import json
with open('Datalab/mydata.json', 'rb') as jsonFile: # rb !!
# tempData = json.loads(jsonFile) # 읽어올떄는 loads 안됨 load
tempData = json.load(jsonFile)
resultData1 = tempData['name']
resultData2 = tempData['age']
resultData3 = tempData['address']
resultData4 = tempData['email']
resultData5 = tempData['empcheck']
jsonData1 = {
"empid" : 12345678,
"name" : '홍길동',
"info": [
{'date1' : '2022-01-21', 'home' : '서울시'},
{'dep' : '개발', 'email' : 'aaa@aaa.co.kr'}
],
"empcheck": True
}
with open('Datalab/mydata2.json', 'w') as writeFile:
json.dump(jsonData1, writeFile, indent=4) # 옵션으로 indent = 숫자
with open('Datalab/mydata3.json', 'w', encoding = 'utf-8' ) as writeFile:
json.dump(jsonData1, writeFile, ensure_ascii= False)
with open('Datalab/mydata4.json', 'w',) as writeFile:
json.dump(jsonData1, writeFile, indent=4, ensure_ascii= False)
with open('Datalab/mydata5.json', 'w', encoding = 'utf-8' ) as writeFile: # 한글 이용시 - 파일 읽을떄 utf-8, dump할때 ensure_ascii = False
json.dump(jsonData1, writeFile, indent=4, ensure_ascii= False)
tmp = 0
오늘의 회고
- 오늘 Flask는 안했지만 몰랐던 부분을 채우는 시간이었다
- 파일 읽고쓰기는 항상 급하게 가져다 쓰느라 제대로 이해하지는 못했었는데 오늘 어느정도 이해하고 넘어가는 것 같다
- 예외처리도 오늘 처음 해봤는데 생각보다 간단했다
- 디버깅 파일 만드는 것도 자세히 알수있어 좋았다
- 주말동안 푹 쉬고 다음주 새로운 과정을 대비해야겠다 !
'Cloud > Cloud 공부일기' 카테고리의 다른 글
Day17 - 클라우드 기초 (0) | 2022.01.25 |
---|---|
Day16 - Flask | 공공 API 사용하기 (0) | 2022.01.24 |
Day14 - Django (0) | 2022.01.20 |
Day13 - Python 주요 자료구조 (0) | 2022.01.20 |
Day12 - Python OOP (0) | 2022.01.18 |