048 파일 열고 닫기(open, close)
파일은 텍스트 파일과 바이너리 파일 두가지 종류가 있음. 텍스트 파일은 사람이 읽을 수 있는 글자로 저장된 파일이고 바이너리 파일은 컴퓨터가 읽고 이해할 수 있는 이진 데이터를 기록한 파일.
예를들어, 윈도우에서 제공하는 메모장 프로그램을 이용하여 내용을 적고 저장하면 텍스트 파일로 저장됨. 이미지 뷰어로 볼 수 있는 jpg 이미지 파일은 이진 데이터를 jpg형식의 파일로 저장한 바이너리 파일임.
파이썬에서 파일을 다루기 위해서 가장 먼저 해야할 일은 파일을 오픈하는 것.
> 파일을 오픈하기 위해서 open() 함수를 이용
file = open("c:\\data\\emp2.csv")
# 문법
# file = open(파일위치와 이름, 모드)
# r : 텍스트 모드로 읽기
# w : 텍스트 모드로 쓰기
# rb : 바이너리 모드로 읽기
# wb : 바이너리 모드로 쓰기
예제. 바이너리 파일 가져오기
1. 이미지 파일을 c:\\data\\ 밑에 저장
2. 아래의 코드 실행
import PIL.Image as pilimg # PIL패키지의 Image모듈을 가져와라
import numpy as np # 이미지를 시각화 하려면 numpy모듈이 필요
# 넘파이는 행렬계산에 최적화된 모듈
# >이미지를 다차원 행렬의 숫자값들로 만들어주는 역할
import matplotlib.pyplot as plt # 데이터 시각화 전문 패키지인 matplotlib의
# pyplot라는 모듈을 임폴트함
im = pilimg.open("c:\\data\\lena.png") # pilimg 모듈의 open()함수로 이미지를 불러와서
# im 변수에 넣음
pix = np.array(im) # im 변수에 있는 숫자값들을 다차원 배열 형태로 변경
plt.imshow(pix) # pix 숫자를 이미지로 변환하여 파이썬 화면에 띄움
문제186. 구글에서 커피에 관련한 이미지를 다운받아서 c:\\data\\ 에 저장하고 coffee_kiosk()함수를 실행하면 메뉴를 선택하시오라는 메시지 위에 커피이미지가 띄워지게 하시오.
def coffee_image():
import PIL.Image as pilimg
import numpy as np
import matplotlib.pyplot as plt
im = pilimg.open("c:\\data\\coffee.png")
pix = np.array(im)
plt.imshow(pix)
ax = plt.gca() # x,y축을 없애는 코드
ax.axes.xaxis.set_visible(False)
ax.axes.yaxis.set_visible(False)
plt.show() # 이미지 출력할때 넣어주면 됨
# 이미지를 coffee_kiosk() 밖의 함수로 만들어서 coffee_kiock()로 만들어주면 됨.
def coffee_kiosk():
#커피 이미지
coffee_image()
문제187. 커피 키오스크를 수행하면 만들어지는 판다스 원형 그래프를 c:\\data\\에 저장하시오.
# 원형그래프
from matplotlib import font_manager, rc
import matplotlib.pyplot as plt
font_name = font_manager.FontProperties(fname="c:/Windows/Fonts/malgun.ttf").get_name()
rc('font', family=font_name) #폰트설정
result = cafe.groupby('커피종류')['가격'].sum().reset_index()
result.columns=['커피종류','총매출']
result.plot.pie(y = '총매출',labels = result['커피종류'], startangle=100, autopct='%1.1f%%')
plt.legend(loc='best',bbox_to_anchor=(1, 1)) # 범례가 너무 멀면 이미지파일 저장시 저장안됨
plt. title('커피종류별 총 매출액')
plt.savefig("c:\\data\\coffee_piechart_"+ time+".png", dpi=300) #파이차트 이미지 자동저장
# dpi = 해상도
return cafe
잉크젯 프린터는 300dpi, 레이저 프린터는 600 dpi를 주로 사용함.
문제188. piechart.png도 날짜와 시분초가 이름에 들어가게끔 구성하시오.
# 원형그래프
from matplotlib import font_manager, rc
import matplotlib.pyplot as plt
font_name = font_manager.FontProperties(fname="c:/Windows/Fonts/malgun.ttf").get_name()
rc('font', family=font_name) #폰트설정
result = cafe.groupby('커피종류')['가격'].sum().reset_index()
result.columns=['커피종류','총매출']
result.plot.pie(y = '총매출',labels = result['커피종류'], startangle=100, autopct='%1.1f%%')
plt.legend(loc='best',bbox_to_anchor=(1, 1))
plt. title('커피종류별 총 매출액')
time = now[:10]+'일_'+now[11:13]+'시_'+now[14:16]+'분_'+now[17:19]+'초' #현재시간
plt.savefig("c:\\data\\coffee_piechart_"+ time+".png", dpi=300) #파이차트 이미지 자동저장
return cafe
# 이미지 삽입 시 x,y축 없애기
# 이미지 삽입 시 x,y축 없애기
import PIL.Image as pilimg
import numpy as np
import matplotlib.pyplot as plt
im = pilimg.open("c:\\data\\coffee.png")
pix = np.array(im)
plt.imshow(pix)
plt.axis('off')
plt.show()
# 또는
import PIL.Image as pilimg
import numpy as np
import matplotlib.pyplot as plt
im = pilimg.open("c:\\data\\coffee.png")
pix = np.array(im)
plt.imshow(pix)
ax = plt.gca() # x,y축을 없애는 코드
ax.axes.xaxis.set_visible(False)
ax.axes.yaxis.set_visible(False)
plt.show()
반응형
'Study > class note' 카테고리의 다른 글
python / 클래스(이해, 클래스 멤버/인스턴스 멤버, 메소드, 생성자, 소멸자) (0) | 2021.12.16 |
---|---|
커피키오스크+ 클래스 생성+이미지 추가 (0) | 2021.12.16 |
커피키오스크 + 이미지 (0) | 2021.12.16 |
pyhon / 모듈 (0) | 2021.12.15 |
python / 함수(지역변수, 전역변수, return값) (0) | 2021.12.15 |