goodthings4me.tistory.com
파이썬으로 북마크(즐겨찾기) 관리 프로그램을 연습해봤다. 북마크 클래스를 만들어서 객체를 생성해 사용하는 방식으로 구현했으며, db 대신 엑셀 파일을 생성하여 입력한 북마크 내용을 저장할 수 있도록 했다.
본 프로그램을 장고(django) 웹 프레임워크 환경에 적용하고 엑셀 대신에 sqlite3나 mysql 등을 활용하면 북마크 웹 프로그램이 구현될 것임
[소스코드]
# Bookmark 클래스
import os
import openpyxl
class Bookmark:
def __init__(self):
self.sitename = ''
self.title = 0
self.url = ''
self.bookmark_lst = '' # 입력값 리스트
def bookmark_set(self, sitename, title, url):
self.sitename = sitename
self.title = title
self.url = url
self.bookmark_lst = [self.sitename, self.title, self.url]
return self.bookmark_lst
def save_csv(self, response):
# 입력값을 저장(y)할 경우만 엑셀파일 접속
# self.bookmark_lst는 저장 여부에 상관없이 초기화되어야 함
if response == 'y':
if not os.path.isfile('./bookmark_db.xlsx'):
bookmark_wb = openpyxl.Workbook()
bookmark_ws = bookmark_wb.active
bookmark_ws.append(['Sitename', 'Title', 'Url'])
bookmark_wb.save('./bookmark_db.xlsx')
bookmark_wb.close()
add_bookmark_wb = openpyxl.load_workbook('./bookmark_db.xlsx')
add_bookmark_ws = add_bookmark_wb.active
row = add_bookmark_ws.max_row
try:
for col in range(1, add_bookmark_ws.max_column + 1):
add_bookmark_ws.cell(row + 1, col).value = self.bookmark_lst[col-1]
add_bookmark_wb.save('./bookmark_db.xlsx')
add_bookmark_wb.close()
self.bookmark_lst = ''
except:
print('저장 에러 발생!!\n')
self.bookmark_lst = ''
return False
return 'Save Success'
elif response == 'n':
print('저장 취소\n')
self.bookmark_lst = ''
return False
def bookmark_get(self):
read_bookmark_wb = openpyxl.load_workbook('./bookmark_db.xlsx', data_only=True)
read_bookmark_ws = read_bookmark_wb.active
print(f'입력 자료 출력\n{"="*20}')
for row_idx in range(1, read_bookmark_ws.max_row):
for col in read_bookmark_ws.iter_cols(min_col=1, max_col=read_bookmark_ws.max_column): # col= A, B, C,...
print(col[row_idx].value)
print()
return True
- 객체 속성(변수)를 이용하여 데이터(사이트명, 글 제목, URL)를 입력 받고(bookmark_set() 메서드),
- 입력된 값을 엑셀에 저장하기 전에 리스트로 추가(self.bookmark_lst 변수)하고,
- 엑셀에 저장할 때 엑셀 파일이 없으면 파일을 생성한 후 데이터를 저장(save_csv() 메서드)한다.
- bookmark_get() 메서드는 엑셀에 있는 데이터 전체를 터미널에 출력해준다.
# 객체 생성 및 메서드 호출
if __name__ == '__main__':
input_people = Bookmark()
insert_cnt = 1
while True:
try:
num = int(input('\n즐겨찾기(Bookmark)로 입력할 URL수는..? '))
except:
print('숫자를 입력하세요!')
continue
while insert_cnt <= num:
sitename = input('URL 이름: ')
title = input('글 제목: ')
url = input('URL(주소): ')
# 객체 메서드 호출
result = input_people.bookmark_set(sitename, title, url)
print(f'\n입력 자료[{insert_cnt}]:')
for n in result:
print(n)
while True:
response = input('\n입력 자료 저장할까요?("y or n"): ')
if response in('y', 'Y'):
save_result = input_people.save_csv(response.lower())
print(save_result, '\n')
break
elif response in('n', 'N'):
save_result = input_people.save_csv(response.lower())
break
else:
print('잘 못 누르셨어요!\n')
continue
if save_result:
insert_cnt += 1
if insert_cnt > num:
input_people.bookmark_get()
break
print('\n프로그램이 종료되었습니다!')
- 입력할 북마크 개수를 설정하고 입력을 하게 한다.
- 사이트 이름, 글 제목, 주소(URL)을 입력받는다.
- 입력한 내용을 다시 보여 주고, 저장 여부를 묻는다. 이때 'y' or 'n'에 대해 lower() 함수로 소문자로 만들어 호출하는 객체의 인자로 보내고, 객체 내부에서는 'y'인 경우만 엑셀에 저장하고, 저장하지 않으면 '저장 취소'를 출력하고 다시 입력하게 한다.
- 마지막으로 설정한 개수만큼 북마크가 입력되면 bookmark_get() 메서드를 호출하여 엑셀에 저장된 북마크 데이터 전체를 출력하고 반복문을 탈출하여 프로그램을 종료한다.
[실행 결과]
# 엑셀 파일(bookmark_db.xlsx)이 이미 생성되어 북마크 데이터가 있는 상태에서 실행

겨찾기(Bookmark)로 입력할 URL수는..? 2
URL 이름: goo44me
글 제목: 스마트스토어 상품 리뷰 추출하기 - 파이썬
크롤링 연습
URL(주소): https://goodthings4me.tistory.com/732
입력 자료[1]:
goo44me
스마트스토어 상품 리뷰 추출하기 - 파이썬 크롤링
연습
https://goodthings4me.tistory.com/732
입력 자료 저장할까요?("y or n"): y
Save Success
URL 이름: good4me
글 제목: 숫자 뽑기 게임 - 파이썬 Tkinter로 구현
URL(주소): https://goodthings4me.tistory.com/725
입력 자료[2]:
good4me
숫자 뽑기 게임 - 파이썬 Tkinter로 구현
https://goodthings4me.tistory.com/725
입력 자료 저장할까요?("y or n"): ㅜ
잘 못 누르셨어요!
입력 자료 저장할까요?("y or n"): n
저장 취소
URL 이름: good4me
글 제목: 온채널 엑셀폼 다운로드 - 업무자동화 프로
그램
URL(주소): https://goodthings4me.tistory.com/714
입력 자료[2]:
good4me
온채널 엑셀폼 다운로드 - 업무자동화 프로그램
https://goodthings4me.tistory.com/714
입력 자료 저장할까요?("y or n"): y
Save Success
입력 자료 출력
====================
보람에
파이썬 관련 코딩 연습한 목록 정리
https://blog.naver.com/borame365/222702307617
good4me
[파이썬기초(예제)] 김밥 주문 계산하기
https://goodthings4me.tistory.com/733
goo44me
스마트스토어 상품 리뷰 추출하기 - 파이썬 크롤링
연습
https://goodthings4me.tistory.com/732
good4me
온채널 엑셀폼 다운로드 - 업무자동화 프로그램
https://goodthings4me.tistory.com/714
프로그램이 종료되었습니다!
(venv) D:\pythonDev>

▷ 객체 관련 자료 더보기>>
[python] 클래스(class)와 객체(object) 이해하기
파이썬 클래스(class)와 객체(object) 이해하기 ■ 함수로 아빠 나이를 관리하는 간단한 프로그램을 작성하면, # Father Age 관리 프로그램 fa_age = 39 # 전역변수 def up_fa_age(): global fa_age # 전역변수 사..
goodthings4me.tistory.com
[python] 파이썬 클래스와 객체의 본질, 그리고 독특한 특성
■ 객체 변수의 선언과 초기화 # 아래 클래스에서 메서드 정의만 보이고 변수 선언은 없지만, 파이썬은 객체에 필요한 변수 i를 알아서 생성해준다. i변수가 생성되는 시점은 객체 내에서 해당
goodthings4me.tistory.com
[python] 파이썬의 변수, 객체, 그리고 참조 주소
■ 파이썬에서 모든 자료(type)는 객체이기 때문에 변수에 객체를 대입하면 특정 메모리 주소를 할당받게 되고, 그 변수를 다른 변수에 대입하면 같은 객체 주소를 참조하게 된다. ■ 파이썬의 기
goodthings4me.tistory.com
블로그 인기글
Windows 10 탐색기 느려지는 증상과 해결하는 방법
잘 작동하던 Windows 10 탐색기가 갑자기 느려지는 증상이 발생했을 때 어떻게 조치를 하는지 구글에서 찾아보니 많은 해결책들이 있었으나 어떤 것이 정확한 해결책인지는 알 수가 없었다. 그래서 해결방법이라고 제시한 것들을 정리해 보았다. 윈도우 탐색기가 느려지는 증상 해결 방법 어느 순간부터 응용프로그램(VS Code 등)에서 폴더 열기나 파일 불러오기를 했을 때 검색 팝업창이 안 뜨거나 열리는 시간이 엄청 느려지는 증상과, 더불어서 탐색기도 실행이 많이 느려지는 증상이 있었다. 기존에 사용하던 VS Code에 openpyxl 설치 후 실행이 느려지는 증상이 발생하더니 윈도우10 탐색기도 느려져서 사용할 수가 없었다. 노트북에 OS(Windows10)를 설치한지 1년이 다 되어가긴 했지만, 1개월 전..
goodthings4me.tistory.com
[국세청] 현금영수증가맹점으로 가입바랍니다. 메시지 해결방법(개인사업자)
▶ 현금영수증 가맹점 가입 메시지를 받고... 온라인 쇼핑몰 사업을 시작하려고 사업자등록증을 발급받고 난 후 얼마 안 있어서 국세청으로부터 어느 시점까지 '현금영수증 가맹점'으로 가입하라는 문자메시지가 받았었다. 그 메시지 기한이 오늘 도래했는데, 인터넷에서 찾아보니 홈택스에서 현금영수증 발급 사업자 신청을 할 수가 있었다. [관련내용] 홈>국세정책/제도>전자(세금)계산서/현금영수증/신용카드>현금영수증∙신용카드>가맹점가입 ▶ 홈택스 사이트에서 신청하는 절차는 다음과 같다. 우선, 홈택스에 로그인을 해야 합니다. 세상이 좋아져서 공인인증서 없이도 손쉽게 간편인증 로그인이 가능하다. 여러 인증방법 중 카카오톡 인증이 가장 편리한 거 같다. 간편인증 로그인 후 상단 '조회/발급' 탭 클릭 후 '현금영수증>현금..
goodthings4me.tistory.com
[엑셀] 근무연수 및 근무 개월수 계산하는 함수
직장을 다니다 보면 몇 년 몇 개월 또는 전체 며칠을 다니고 있는지 궁금할 때가 있다. 아니면, 총무나 인사 일을 할 때 직원들의 근속연수 또는 근속개월수 등을 계산하고 싶을 때도 있다. 이런 경우 엑셀 함수를 활용하면 어떨까!! 근무연수 및 근무 개월수 계산 함수 알아보기 엑셀에서 근무연수 또는 근무 개월수 계산하는 것은 datedif() 함수를 사용하면 간단하게 해결할 수 있다. 아래 이미지를 보면서 설명하면, 셀 E1에 기준일자를 입력하고, 근무연수를 구할 때는 =datedif(B3,$E$1,"Y")&"년" 을 입력한다. 근무개월수는 =datedif(B3,$E$1,"M")&"개월" 처럼 입력한다. 일수까지 파악할 때문 별로 없지만, 심심풀이로 구해보고 싶을 때 =datedif(B3,$E$1,"D")..
goodthings4me.tistory.com
'코딩 연습 > 파이썬 기초(예제)' 카테고리의 다른 글
가위바위보 게임 [파이썬기초예제] (0) | 2022.04.21 |
---|---|
bmi 계산하기 - 한국인의 체질량 지수 계산 [파이썬기초예제] (0) | 2022.04.20 |
파이썬 반복문 - 김밥 주문 계산하기 [파이썬기초(예제)] (0) | 2022.04.15 |
[파이썬기초(예제)] 회원가입 아이디 및 비밀번호 생성, 유효성 체크 기능 (0) | 2022.04.15 |
파이썬 openpyxl 활용 엑셀 시트 이름 가져오기 (0) | 2022.04.13 |
댓글