210806_파이썬_

Hannah·2021년 8월 13일

#csv파일
엑셀과 유사한 형태로 사용 가능

values = []
values.append(('alghost', 'fastone'))
values.append(('yskim', 'fastcampus'))
values.append(('jelee', 'fastfive'))
 
datafile = open('result.csv', 'w')
 
for line in values:
    data = ','.join(line)
    datafile.write(data+'\n')
datafile.close()

result.csv 파일에는
alghost,fastone
yskim,fastcampus
jelee,fastfive

이렇게 저장이됨.

패키지설치 활용

pip install [패키지 이름]
pip는 의존되는 패키지도 같이 설치 해줌.

파이썬 패키지가 관리되는 곳 - pypi.org

##패키지란?
특정 기능을 여러 클래스로 구성해놓은 코드집합
대부분의 패키지는 문서가 있음 => 레퍼런스 문서

openpyxl -> 엑셀을 다루는 패키지 중 하나

권한 문제 있을 경우 -> sudo pip install [패키지이름]

##패키지 설치 확인 import로 확인 가능
터미널에서 python 실행
ex) import openpyxl

##엑셀 파일 읽어오기
사람이 데이터 확인 -
데이터가 들어있는 파일 찾아서 열기 - 데이터가 들어있는 시트로 이동 - 데이터가 있는 위치(예:a4)로가서 데이터 확인

프로그램이 데이터 확인 -
데이터가 들어있는 파일명으로 클래스 변수 생성 - 클래스 변수에서 시트이름으로 원하는 시트 가져옴 - 데이터가 있는 위치의 데이터를 확인

#셀 하나씩 지정해서 가져오기
from openpyxl import load_workbook
'''load_workbook함수 가져옴'''
wb = load_workbook('simple_data.xlsx')
'''엑셀파일의 내용을 모두 읽어서 클래스 변수 wb로 만들어줌'''
data = wb.active
'''이것은 시트를 선택하는 과정'''
'''active는 load_workbook의 변수인데 가장 마지막에 활성화된 시트를 가져옴 '''
 
print(data['A1'].value)
print(data['A2'].value)
print(data['B1'].value)
print(data['B2'].value)
'''원하는 셀을 가져오고 싶을 때는 인덱싱을 사용할 수 있음. '''
'''셀은 가지고 있는 정보가 많음 값도 있지만(폰트,배경색,테두리 등등)
여기서는 값을 가지고 오려고 value를 씀'''

##여러개의 셀을 한번에 가져오기
-열과 행을 지정해서 가져오기

from openpyxl import load_workbook
wb = load_workbook('simple_data.xlsx')
data = wb.active
 
row = data['2']
for cell in row:
    print(cell.value)
 
print('-'*20)
 
col = data['A']
for cell in col:
    print(cell.value)
-여러행,여러열 가져오기(+시트지정)
from openpyxl import load_workbook
wb = load_workbook('simple_data.xlsx')
data = wb['sheet_test']
'''시트를 지정할때는 대괄호를 사용해서 인덱싱, 이때 시트의 이름 사용'''
area = data['A1:B2']
'''영역을 지정 A1과 B2까지 사각형을 만들어서 가져옴'''
 
for row in area:
    for cell in row:
        print(cell.value)
'''첫번째 for문은 row에 A1과 B1이 들어있는 튜플을 가져오고,
 두번째 for문은 cell에 a1과 b1각각을 가져옴    '''
print('-'*20)
 
cols = data['A:B']
for col in cols:
    for cell in col:
        print(cell.value)
'''A:B 열을 지정'''
print('-'*20)
 
rows = data['1:2']
‘’’여기에 print(rows)를 하면 어떻게 튜플이 지정되어 나오는지 볼수 있음’’’
for row in rows:
    for cell in row:
        print(cell.value)
'''1:2행을 지정'''

##엑셀파일에 내용쓰기
프로그램이 엑셀에 데이터를 쓸 때 -
데이터를 쓸 엑셀파일의 파일명으로 클래스 변수 생성 or 파일명 없이 클래스 변수 생성-
클래스 변수에서 시트이름으로 원하는 시트 가져오거나 생성 -
원하는 위치에 데이터 쓰고 저장

from openpyxl import Workbook
 
wb = Workbook()
ws = wb.create_sheet('sheet_test2')
'''create_sheet함수로 시트 생성 이 함수는 시트를 생성하고 반환도 해줌'''
 
ws['A1'] = 'alghost'
ws['B1'] = 'test'
 
wb.save('result.xlsx')
'''save 함수로 파일로 저장'''

-하나하나가 아니라 행 단위로 값을 넣을 때
from openpyxl import Workbook
 
wb = Workbook()
ws = wb.create_sheet('sheet_test3')
 
ws.append(['Number', 'Name'])
'''첫번째 열이 Number, 두번째가 Name'''
for i in range(10):
    ws.append([i, str(i) + ' data'])
    '''Number에는 1...9까지 아래로 찍히고 Name에는 0 data...9data까지 들어감'''
 
wb.save('result2.xlsx')

##큰 엑셀 파일 읽기
load_workbook의 문제점 : 모든 엑셀파일을 한번에 가져옴

from openpyxl import load_workbook
 
wb = load_workbook('test_data.xlsx', read_only=True)
'''load_workbook의 인자 값에는 read_only가 있는데 True로 설정시 
읽기전용파일을 만들어줌'''
data = wb.active
'''데이터를 행으로 순서에 따라 가져와야함'''
'''iter_rows는 한행씩 꺼내줌 A1->B1->C1 순서로'''
for row in data.iter_rows(max_col=1, max_row=2):
    for cell in row:
        print(cell.value)
'''max_row, max_row, max_col, min_col로 영역지정 가능'''

#메일 발송 원리
SMTP 서버 - 메일 보내는 서버주소
POP 서버 주소 -메일 받는 주소
SMTP 서버 포트 - SMTP주소로 갈 때 쓸 길 번호
POP 서버 포트 - POP 주소로 갈 때 쓸 길 번호
계정 정보 : 아이디, 비밀번호

메일을 보내기 위해서는 서버가 원하는 형태의 모습으로 가공
보내는 사람, 받는 사람, 제목, 내용 등
SMTP서버에 로그인
SMTP 서버로 데이터 전송

0개의 댓글