library
library 설치방법
파이참 > ctrl + alt + s 눌러 셋팅 창 띄움
Project > Project interpreter 선택 > + 버튼 선택 > packet 검색 및 설치
Object Serialization
pickle
pickle.load
pickle.dump
DB
shelve - DB. dict처럼 사용
엑셀 파일 제어
xlsxWriter: 쓰기전용
openpyxl: 읽기 쓰기 가능 (library 설치 필요)
import openpyxl
# overwrite
wb = openpyxl.Workbook()
ws1 = wb.active
ws1.title = 'sheet1'
ws2 = wb.create_sheet('sheet2')
ws1['A1'] = 10
ws1['B1'] = 20
ws1['C1'] = '=sum(A1:B1)'
ws1['A2'] = 'korea'
ws1.append([100, 200, 300, 400])
ws2['A1'] = 'hello'
wb.save('my.xlsx')
wb.close()
# read
wb = openpyxl.load_workbook('my.xlsx')
ws1 = wb['sheet1']
ws2 = wb['sheet2']
print(ws1['A1'].value)
print(ws1['C1'].value)
print(ws2['A1'].value)
print('행의 갯수: ', ws1.max_row, ' 열의 갯수: ', ws1.max_column)
for c1, c2, c3, c4 in ws1.rows:
print(c1.value, c2.value, c3.value, c4.value)
ws2['B1'] = 'hi'
wb.save('my.xlsx') # 수정이 있는 경우 반드시 저장 필요
wb.close()
XML Parser
beautifulSoup4
- 자식, 후손 탐색: . find findAll
- 부모: parent
- 형제: findNext, findPrevious
# song.xml file
# <kpop>
# <songlist>
# <song album="album1">
# <singer>singer1</singer>
# <title>title1</title>
# </song>
# <song album="album2">
# <singer>singer2</singer>
# <title>title2</title>
# </song>
# <song album="album3">
# <singer>singer3</singer>
# <title>title3</title>
# </song>
# </songlist>
# </kpop>
from bs4 import BeautifulSoup
fp = open('song.xml')
soup = BeautifulSoup(fp, 'html.parser')
fp.close()
# print(soup) # root element (=전체 xml) 출력
### 자식 관련
# print(soup.songlist) # songlist 포함 하위 element 출력 = print(soup.find('songlist'))
# print(soup.find('song', {'album':'album2'})) # <song album="album2"> 인 element 출력
# print(soup.find('song', {'album':'album2'}).title) # <title>title2</title>
# print(soup.find('song', {'album':'album2'}).title.string) # title2
# print(soup.findAll('song')) # song element 전체를 list로 출력
### 부모 관련
song = soup.find('song', {'album':'album2'})
# print(song.parent) # songlist 포함 하위 element 출력
# print(song.parent.parent) # root element (=전체 xml) 출력
print(song.findNext('song')) # 다음 song element (=album3)
print(song.findPrevious('song')) # 이전 song element (=album1)
### element 추가
song = soup.new_tag('song', album='album4')
singer = soup.new_tag('singer')
singer.string = 'singer4'
title = soup.new_tag('title')
title.string = 'title4'
song.append(singer)
song.append(title)
soup.songlist.append( song )
fp = open('song.xml', 'w')
fp.write(soup.prettify())
fp.close()
### 삭제
soup.songlist.decompose()
print(soup)
PyQT5
PyQt5 / PyQt5-sip / pyqt5-tools (pyqt5-tools v5.9.1.1 까지는 파이썬 3.7 에서 설치가 안됨) 설치
C:\Program Files\Python36\Lib\site-packages\pyqt5-tools 경로에서 (경로는 파이참 > settings > project interpreter 의 경로를 따름)
designer.exe 파일의 바로가기를 바탕화면에 만든다.
테스트 코드
pyqtTest.zip
google 에서 api 검색 pyqt {keyword} (ex: pyqt QPushButton)
python qt 책은 없음. 그냥 qt 책 사서 공부하기