분류 전체보기99 자작 1) 양면 합치기 /좌우바꿈(일본만화식)/ 보호되어 있는 글 입니다. 2022. 10. 8. .zip 파일 다루기 import zipfile import os 1. 압축하기 1-1. 개별파일 압축하기 : zip객체.write() 텍스트파일을 open해 ‘w’모드로 쓰는 것과 마찬가지로 zip파일을 만들고 그 안에 압축할 파일들을 쓰는(write) 방식으로 사용한다. my_zip = zipfile.ZipFile("C:/Users/User/Desktop/test_zip.zip", 'w') # zip파일 쓰기모드 my_zip.write('C:/Users/User/Desktop/test1.txt') # 압축할 파일 write my_zip.close() # zip파일 close 하지만 이렇게 하면 파일만 압축하는게 아니라, 그 모든 경로들을 전부 압축해버리기 때문에 작업디렉토리를 이동해서 작업하는 게 좋다. os.chdir(.. 파일 관리 - 이미지 처리 - pdf 2022. 10. 8. 캡처 매크로 s 캡처 사용 import pyautogui as auto import time import pyperclip total_page = 100 book_name = 'ebook' capture_pos = (1269, 536) ebook_screen_center_pos = (2144, 1041) sleep_time = 1.0 time.sleep(5.) for i in range(int(total_page/2)): file_name = book_name + '_' + str(i+1).zfill(4) + '.png' pyperclip.copy(file_name) auto.click(capture_pos) time.sleep(sleep_time) auto.hotkey('ctrl', 'v') # s캡처 단축키 ti.. 파일 관리 - 이미지 처리 - pdf 2022. 10. 5. img to pdf ( pprint ) pprint from PIL import Image from pprint import pprint import os path = input("Path of image files : ") ConvertedToPdfPath = input("Path of pdf : ") file_list = os.listdir(path) #pprint(file_list) img_list = [] k = 0 for i in file_list: k += 1 if k%100==0: print("진행상황 : "+str(k)+'/'+str(len(file_list))) img = Image.open(path+"\\"+str(i)) img_1 = img.convert('RGB') img_list.append(img_1) img_1.sa.. 파일 관리 - 이미지 처리 - pdf 2022. 9. 23. zip to pdf ( img2pdf, zipfile, os, glob, shutil ) 보호되어 있는 글 입니다. 2022. 9. 23. 2021.5 장고 학습 실패 기록 파이썬 하면, 장고는 무조건 해야하니깐, 하기로 했다. 처음부터 장고할껄 -_-;; 책 서두 부분 학습계획표에 보면, 도전 30일 완성 : 하루에 한 시간씩 한 달만 공부하면 누구나 파이썬 웹 개발을 정복할 수 있습니다. 한 학기 강의용으로 16주 동안 계획,학습 해보세요. 현직 개발자라면 16일 안에 빠르게 학습해보세요. 하루에 한 시간. 30일. 즉, 30시간이면 """누구나""" 할 수 있다. ㅠㅠ 하루 8시간 공부하면, 4일이면, 누구나 할 수 있다는 난이도라는건가??? 개인 목표 뭐...하루 한 시간 책보고, 실습 서너시간을 말한 것이겠지 싶으면서, 그래도, 하루 풀타임으로 쓸 수 있는 상황이니깐, 그러면 넉넉잡고 일주일 안에 실습까지 1독을 하자.. 그리고, 비슷한 류 장고 책 (점프 투 장고.. 장고/배포(서버 nginx 도커) 2022. 9. 10. 장고걸스 : 파이썬 애니웨어 첫 배포[2022.7] http://jamukha.pythonanywhere.com/ Django Girls blog 2022년 7월 25일 10:24 오후 검색어 입력 Need help? Talk to us! 들어가며 설치하기 설치하기 (chromebook) 인터넷은 어떻게 작동할까요 Command Line 시작하기 Python 설치하기 코드 에디터 Python 시작하기 Django란 jamukha.pythonanywhere.com 소회 배포가 이렇게 어려울 줄 몰랐다. php 방식들처럼 ftp 로 올리고 땡일 줄 알았는데, 대부분의 입문 책들이 aws 나 기타 서비스를 기준으로 해설하는 이유가 있었다. 그냥 그렇게 따라하면 됐는데, 리눅스 홈서버와 나스를 운용하고 있어서 어떻게든 독자 배포를 목적으로 했는데, 상당히 많이 .. 장고/배포(서버 nginx 도커) 2022. 9. 10. Doit장고 학습 기록(2022.8) 약 630여 페이진데... 2021년 5월...실패 요약 파이썬이 대세고, 장고가 쉽고 좋다는 온갖 뽐뿌질에 야심차게 도전했다가....실패. 흑..ㅠㅠㅠㅠㅠ 상처는 컸다. 분명 쉽게 잘 씌여진책인데, 책을 보다보면 정말 어마어마한 정성을 들인 책이란 게 느껴진다. 저자들의 노고와 학습자에 대한 기대를 보면 미안해지는 마음에 나름 열심히 했는데 실패. 처음 약 20%는 무려 가장 기초적인 html css javascript 부트스트랩 까지 가볍지만, 정말 열심히 다룬다. 이건 정말 백화점이다. 고기를 잡는 방법을 가르쳐주고자 하는 저자들의 노고에 정말 경건해지는 책이였다. 처음 짧은 시간 동안 팍팍 나가다가, 어느 순간 급격하게 높아지는 난이도에 멘붕이 왔었다. 다시 정신차리고 봐도 안됐다. 아.... 무.. 장고/배포(서버 nginx 도커) 2022. 9. 10. 점프투장고(2022.8.14-8.21) 점프투장고(2022.8.14-8.21) ::: 학습기간 : 4.5일 + 배포 삽질 1.5일 작년에 실패한 후, 볼까말까했던 책인데 ... 다시 보길 잘했다. 되돌아보니, 장고로서는 가장 기본적이고 필수적인 내용을 다룬 좋은 책인 것 같다. 근데, 어렵긴 어렵다. +_+ 여기 있는 내용을 빠삭하게 하면, 다른 내용들은 쉽게 소화할 수 있을 것 같다. 8/14 일 점프투장고 이번엔 제대로 하기로 함. 8/15 월 ( 전에 어려워서 중단. ㅠ ) 비교적 빨리 진행되는거 보니 약간 늘긴 늘었나 보다. 부트스트랩, css 도 가급적 직접 쳐보기로. 폼 수작업. 페이지네이터에서 3-4시간 주화입마에 빠짐. 사실은 간단한 거였는데. ㅠㅠ 답변등록 학습하면서, foreignkey 에 등록할 때, 객체로 입력하는 것을 .. 장고/배포(서버 nginx 도커) 2022. 9. 10. urllib.request 와 requests 1 2 3 4 5 6 7 8 9 10 11 12 # common module import requests import urllib.request # BeautifulSoup from bs4 import BeautifulSoup as bs # Selenium from selenium import webdriver from scrapy.selector import Selector from selenium.webdriver.common.by import By from selenium.common.exceptions import NoSuchElementException cs 1. requests 먼저 requests는 데이터를 전송할 때 딕셔너리 형태로 보낸다. 만약 존재하지 않는 페이지를 요청해도, 500, .. 활용3. 웹스크래핑(0825-0829)/urllib 2022. 9. 10. 스크래핑: urllib 필수 기초 파이썬에서는 웹과 관련된 데이터를 쉽게 다룰 수 있도록 urllib모듈을 제공한다. python2 버전에서의 urlparse가 python3에서는 urllib.parse로 변경됐다. docs.python.org/3/library/urllib.html#module-urllib urllib — URL handling modules — Python 3.9.1 documentation docs.python.org urllib.request urllib.request 모듈은 다이제스트 인증, 리디렉션, 쿠키등과 같은 URL이나 HTTP를 여는 데 도움이 되는 함수와 클래스를 정의한다. 즉, urlib.request를 사용하면 간단하게 웹 페이지 요청 및 데이터를 가져오는 것이 가능하다. 중요내용 위주로 정리해 보.. 활용3. 웹스크래핑(0825-0829)/urllib 2022. 9. 10. 스크래핑: urllib, BeautifulSoup 뷰티풀 수프는 크롤링 프로젝트에서 scrapy와 같이 가장 많이 사용되는 도구중 하나다. HTML 문서에서 필요한 부분만 출력해서, 크롤링의 속도를 올려주는 모듈이다. # BeautifulSoup 추가하기 1 2 3 4 5 6 7 from bs4 import BeautifulSoup as bs from urllib import request url = 'https://www.example.com' html = request.urlopen(url) soup = bs(html, 'html.parser') Colored by Color Scripter cs # 정갈하게 출력하기 prettyfy() 사용 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 .. 활용3. 웹스크래핑(0825-0829)/urllib 2022. 9. 8. 코랩 : 셀레니움, 구글 드라이브 파일 저장 코랩엔 우분투 도커가 들어있었어... 공짜로 리눅스를 주네. -_- 우분투 18.04 코랩 파일 다루기 (구글 드라이브에서) # /content/drive/My Drive/Colab Notebooks/ f = open("/content/drive/My Drive/Colab Notebooks/voca_db.txt", 'w', encoding="utf8") f.write("ㅇㅇㅇ') f.close() 코랩에서 셀레니움 크롬드라이버 #!pip uninstall selenium #!pip install selenium==3.141 #!apt-get update #!apt autoremove !pip install selenium !apt install chromium-chromedriver chrome_opti.. python(0821-0908)/메모 2022. 9. 8. 초보코딩 pillow : 이미지 다루기 (흑백처리, 모자이크, 도트) 초보코딩 실습 나도코딩 GUI 실습 후, 관련 예제를 찾아봤다. Pillow Image 실습. 딱이야! 1. 이미지 grey 흑백으로 바꾸기 투명 png 갖다 썼다가 안돼서 헤맸었다. convert('RGB') 필요 r.size 로 이미지의 크기 (전체 픽셀수) 구하고, r.getpixel( i, j ) r.putpixel((i,j), ( , , , ) from PIL import Image import matplotlib.pylab as plt import os # 이미지 흑백으로 바꾸기: rgb평균값으로 동일하게 putpixel im = Image.open("pica2.jpg") r = im.convert('RGB') # plt.imshow(r) # r을 plotting(가시화)한다. # plt.sh.. python(0821-0908)/메모 2022. 9. 7. 학습 리뷰 7월 파이썬 장고 재도전 유튜브 베프 웹 따라하기(약 2주) 아무리 적응하려해도, 유튜브 콸이 너무 낮아서 ㅠㅠ 빠르게 훑어보는 역할. ( 아주 초심자 또는 초급 이상자) 에 맞는 것 같다. 즉, 이걸 레퍼런스 삼아서 회독하고, 보강하기엔 취지에 안맞는 책. Doit장고, 파이썬 웹프로그래밍(기본/심화편) : 약 2주 --- 결국 다 실패. Doit 장고 : 설명도 자세하고 좋으나, 많은 내용을 다루다보니, 그 스피드감으로 뒷 부분에서 좌절. 클래스형뷰 커스터마이징 위주여서, 어느 순간 내가 뭐하는건지...멘탈붕괴 파이썬 웹프로그래밍(기본/심화편) : 이걸 뭐라해야할지 모르겠다. 강의교재 정도로는 적합. 문체가 너무 답답하다.... ㅠ 장고걸 튜토리얼 따라하기. 방향이 계속 안잡혀서, 오래된 웹문서지만,.. python(0821-0908)/메모 2022. 9. 7. GUI 4. 보너스. 캡처 keyboard, ImageGrab.grab() 이렇게 간단히 캡쳐 프로그램을 만드네.. 흠. 단축키 설정과 비슷한 레벨이네. import time import keyboard from PIL import ImageGrab def screenshot(): # 2020년 6월 1일 10시 20분 30초 -> _20200601_102030 curr_time = time.strftime("_%Y%m%d_%H%M%S") img = ImageGrab.grab() img.save("image{}.png".format(curr_time)) # ex) image_20200601_102030.png keyboard.add_hotkey("F9", screenshot) # 사용자가 F9 키를 누르면 스크린 샷 저장 #keyboard.add_hotkey("a", scree.. python(0821-0908)/활용2. GUI(0903-0906) 2022. 9. 6. GUI 3. image_merge 전체코드 학습 리뷰 처음 html 이라고 무시하던 것들이 학습을 "매우" 더디게 했다. 좀 빠르게 맥락을 파악했으면 좋았으련만... 기초 컨트롤 박스들과 결합이 핵심적이였다. import os import tkinter.ttk as ttk import tkinter.messagebox as msgbox from tkinter import * # __all__ from tkinter import filedialog from PIL import Image root = Tk() root.title("Nado GUI") # 파일 추가 def add_file(): files = filedialog.askopenfilenames(title="이미지 파일을 선택하세요", \ filetypes=(("PNG 파일", "*.png.. python(0821-0908)/활용2. GUI(0903-0906) 2022. 9. 6. 리스트 insert,append // pop, del, remove // a.count(1), len(a) insert() : 추가, 수정 둘 다 가능 append() : 끝에 추가하기 pop() del[] : 요소 index로 삭제. 슬라이싱 삭제 remove() --> value 중 20 을 삭제. a.remove(20) a.index(3) --> 3의 index 값은? a.count(1) ---> 1 이 몇 개? len(a) -----> 리스트a 의 요소 수는? ---> 반복문 실행시, 몇 번해야하는지 확인 a[2] = 4 >>> a = [1, 2, 3] >>> a[2] = 4 >>> a [1, 2, 4] del 은 특이하게 명령어 모양 >>> a = [1, 2, 3] >>> del a[1] >>> a [1, 3] del a[2:] >>> a = [1, 2, 3, 4, 5] >>> del a[2:] >>.. python(0821-0908)/메모 2022. 9. 5. 2. GUI 활용 예제 : 이미지 합치기 기초 인터페이스 익히는 부분이 역시 가장 지겨웠다. ㅠ html, css 같은거라서 이해하긴 쉽지만, 알아야 하는... 이번 예제는 간단한 예제면서도, 개인 프로그램 용도로는 웬만한건 다 할 수 있을만한 예제같다. 파일 선택 : filedialog.askopenfilenames(title="", filetypes=(튜플), initialdir=r"" ** title 유의. (text 아님 ) 선택한 파일을 list_file=Listbox() 에 추가 list_file.insert(END, file) 선택 삭제 del_file(): def del_file(): # Listbox요소삭제: list_file.delete(요소번호) msgbox.showwarning import tkinter.ttk as ttk.. python(0821-0908)/활용2. GUI(0903-0906) 2022. 9. 5. 2.GUI : tkinter 익히기 간단한 프로그램 만드는 사람들 참 부러웠는데, 어찌됐건 이제야 해본다. 생각해보니, 웹이 어려운거였다. 신경쓸게 참 많았으니까. 따라해보는데, 왜 이리도 진도가 안나가고 흥미가 안느껴질까.... 하.... 어려워서가 그런게 아니라, 기초가 지루하니까, 겨우 30분 1시간 기초과정을 익힐 때 ...왜 그럴까나. 기초라서 이해면에서 쉽다고 생각해서, 멍때리고 보니까 고질병인것 같다. 영상강의와 교재를 통한 강의의 가장 큰 차이가 이 부분인 듯 하다. 먼저 개괄적으로 본 다음 무엇을 배우는지, 어떤 문법 특징을 말하려는지 한번 살피고, 들어가면 더 좋을 듯 한데. 1. 기본세팅(create_frame) root = Tk() root.title("나도코딩") root.geometry("640x480+900+10.. python(0821-0908)/활용2. GUI(0903-0906) 2022. 9. 3. 게임 3 활용 : 팡팡 매우 복잡하진 않지만, 초심자에겐 다중 리스트, 딕셔너리형 리스트, x축 y축의 방향 고려한 위치정보로 상당히 헷갈렸다. 한 줄 for 문. 리스트 요소 삽입, 삭제 등. 음 파이썬 문법을 익히기 위해서는 매우 좋은 예제 같다. 코드가 능숙해진 상태라면, 상당히 재밌는 예제. 초등학생은 어렵겠고, 중-고등 때 물리 속력, 속도가 컴퓨터에서 이렇게 쓰일 수 있구나 하며 감탄했다. 속도하면, 일상적으로 시간 당 킬로의 단순 계산이나, 왼쪽에서 오른쪽의 방향으로만 생각하는데, x 축이 뒤바뀐 상태의 속도, 특히, y 축이 거꾸로 된 속도 개념에서 처음에 헤맸다. -_-;; 이렇게 쉬운걸. 단순하지만, 한번 그 틀을 벗어날 때가 가장 힘든 것 같다. 우리가 언젠가 처음 - 음수를 접할 때 처럼. 딸내미 코딩 배.. python(0821-0908)/활용1 게임(0830-0902-) 2022. 9. 1. 게임 2 quiz 똥피하기 기본 뼈대를 펼쳐놓고, 만들기 1. frame 뼈대 만들기 screen = pygame.display.set_mode((screen_width, screen_height)) # 화면타이틀 : pygame.display.set_caption("나도게임") # 이벤트루프 running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False #종료 pygame.quit() 2. 백그라운드 이미지 -> blit 1. background = pygame.image.load("경로") #이벤트루프 안에서, 배경 그리기. blit, 튜플로 좌표, display.update() 2. screen.. python(0821-0908)/활용1 게임(0830-0902-) 2022. 8. 31. 게임 1 기초 약 3시간 강의 파트 1 : 기초 학습 ( 약 70분 강의 ) 파트 2 : Quiz 똥 피하기 약 15분 파트 3 : 팡팡 만들기 90분 게임은 쓸모가 없을 것 같아서 실습 안하려다, 초딩 아이 흥미를 끌어볼 수 있지 않을까 하여... 아빠의 마음으로 +_+ 소스 미리 프린트 하기: 약 20분 학습 진도가 너무 더뎌서, 챕터별로 한번 눈으로 보기 : 약 2시간+ 대략적인 강의 뼈대를 정리 : 1시간 직접 코딩하가 : 2시간~3시간 파이게임 기본 뼈대 import pygame ############################################################## # 기본 초기화 (반드시 해야 하는 것들) pygame.init() # 화면 크기 설정 screen_width = 480.. python(0821-0908)/활용1 게임(0830-0902-) 2022. 8. 31. 웹스크래핑3 셀레니움 2 구글무비 휴... 꾸역꾸역 여기까지 왔다. ㅠㅠ 와웃... 결국, 이게 거의 결정판인데, 아쉽게도 페이지가 업데이트돼서 제대로 실습을 못했다. 하지만, 이제 웹상에 있는 다른 크롤 예제들을 봐도, 이해하고 사용할 수 있겠다. 주로 표형태를 추출, 재가공(db 저장포함) 하고 싶으니, 다른 예제들로 더 공부해가야겠다. 나도코딩님 리스펙~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 후기 : 하루이틀이면 끝날 줄 알았는데, 실습하는데 하루 3-4시간씩 약 일주일 걸렸다. 흑. 삽질 2020 강의라서, 2022 년엔 ui가 태블릿 친화적으로 바껴버렸다. 빨리 했어야해.. 흑 1독 (포인트만 기록하며, 가급적 끊지 않고 보기) 보면서, 따라치면서 하니 ... 진도도 안나가고, 너무 힘들었다 ㅠ 먼저 1회 시청을 똑바.. 활용3. 웹스크래핑(0825-0829)/selenium 2022. 8. 29. 웹스크래핑3 셀레니움 1 네이버 항공권 WebDriverWait(browser, 30).until(EC.presence_of_element_located((By.XPATH, xpath_str))) 삽질 기존 강의로 꾸역꾸역 따라하다가, 변화된 것이 많아서 울고 있다가, 2022버전으로 업데이트 강좌가 있어서 진행할 수 있었다. 하기 예제에서 xpath 추출 시, find_element"s" 로 배열로 추출할 경우, 배열값이 [0] 이 아닌, [1]도 있을 수 있으므로, xpath 절대경로를 사용하는 것이 좋겠다. 단, 예제대로 따라하면, xpath 경로 추출시, text 포함, 일치의 조건 사용방법을 익힐 수 있었다. 나도코딩님은 강의 천재야... 난이도가 분명히 올라갔는데, 슬쩍슬쩍 할 수 있을만큼 올라간다. +_+ 키포인트 클릭 후, 로딩되기 전까지 기다리기 find_element(By.XPATH, '//button[text() = "가는 날"]') # (By.XPATH, '//button[ .. 활용3. 웹스크래핑(0825-0829)/selenium 2022. 8. 29. 웹스크래핑3 셀레니움 기초: 네이버 로그인 send_keys("키") 이 예제만으로는 네이버에 로그인할 수 없다. 나도코딩님이 고정댓글로 안내해주신 주소를 참조해서 실습만 해봤음. capcha 가 나타나서 제길! 2. 네이버 로그인 import time from selenium import webdriver from selenium.common.by import By from selenium.common.keys import Keys browser = webdriver.Chrome() # "./chromedriver.exe" # 1. 네이버 이동 browser.get("http://naver.com") # 2. 로그인 버튼 클릭 elem = browser.find_element_by_class_name("link_login") elem.click() # 3. id, pw .. 활용3. 웹스크래핑(0825-0829)/selenium 2022. 8. 29. 네이버 웹툰 (urllib: request, request.urlretrieve) # https://foxtrotin.tistory.com/173 파이썬 beautifulsoup로 웹툰 크롤링, 다운로드 하기 *본 글은 공부목적으로만 참고하세요 파이썬 크롤링 시리즈 네이버 웹툰 이미지 크롤링, 저장하기: 현재글 셀레니움으로 웹 게임 자동 매크로 만들기: foxtrotin.tistory.com/179 네이버 실시간 검색어 foxtrotin.tistory.com request.urlopen() request.urlretrieve(url, 저장명) os.chdir("..") # 상위폴더 re.sub() : 태그제거 https://wikidocs.net/4308 from bs4 import BeautifulSoup import urllib.request import os, re #태그 제거 .. 활용3. 웹스크래핑(0825-0829)/기타 2022. 8. 29. 스크래핑 iframe 처리 (네이버 홈: 우측 쇼핑몰) selenium 셀레니움 접속 후, 엘리먼트를 찾아도 안되는 경우들이 있다. 네이버 홈화면 우측에 보이는 쇼핑몰들이 대표적인데, 이럴 때는 iframe 이동처리를 해야함 네이버 쇼핑 https://jaeseokim.dev/Python/python-Selenium%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%9B%B9-%ED%81%AC%EB%A1%A4%EB%A7%81-%EA%B0%84%EB%8B%A8-%EC%82%AC%EC%9A%A9%EB%B2%95-%EB%B0%8F-%EC%98%88%EC%A0%9C/ from selenium import webdriver import time import random # 다운받은 webdriver의 경로설정 driver = webdriver.Firefox(e.. 활용3. 웹스크래핑(0825-0829)/selenium 2022. 8. 29. ★스크래핑 3-1 : 셀레니움 기초 실습 (ver. 4.2 이하) DeprecationWarning: executable_path has been deprecated, please pass in a Service object 오류 해결 앞서 배운 beautifulsoup 으로만 안되는 사이트들이 있어서, (브라우저로 접속해서 로그인이나 클릭 등이 필요한 사이트들) 셀레니움을 학습 무작정 따라하다 발생하는 대표적 오류 (셀레니움 버전 문제) DeprecationWarning: executable_path has been deprecated, please pass in a Service object 오류 해결 pip install selenium==4.2.0 pip install selenium==4.2.0 Selenium 4.x : OS 별 Broswer 버전을 자동 감지하여 Web Driver 설치를 자동으로 할 수 있습니다.Selenium 4.0부터는 OS와 Web Broswer에 맞는 Web Driver를 자동으로 다운로드하고 로딩.. 활용3. 웹스크래핑(0825-0829)/selenium 2022. 8. 28. 스크래핑 2-3 네이버 주식 (csv 모듈 ) 네이버 주식 (테이블->csv 모듈) import csv --> csv.writer(f) , writer.writerow(title) writer.writerow(리스트형데이터) 파일쓰기 : filename = "시가총액1-200.csv" f = open(filename, "w", encoding="utf-8-sig", newline="") writer = csv.writer(f) 엑셀에서 한글 깨질 때, utf-8-sig 로 newline="" 이 없으면, row 마다 빈 줄이 추가됨. 탭 기준으로 split :: title .split('\t") 빈 줄 skip( td colspan="10" 같은..의미없는 줄은 출력X ) --> if len(columns) tbody->find_all("tr") -.. 활용3. 웹스크래핑(0825-0829)/requests 2022. 8. 28. 이전 1 2 3 4 다음