많은 파일을 한꺼번에 폴더로 정리하자! Directory Packager

프로그래밍/Python 2022. 4. 29. 23:19

Directory Packager는 파일을 갯수단위로 묶어서 폴더로 정리해주는 프로그램입니다. 폴더를 묶을때 방식은 순차 작업, 균등 작업, 랜덤 작업으로 총 3가지를 지원합니다. 사용 방법 게임을 하면서 스크린샷을 찍었는데 플레이 타임이 100시간이 넘어가다 보니 파일이 1321개로 상당합니다. 티스토리에 올리려고 보니깐 한번에 50개씩 올리라고 하더라구요? 50개씩 파일 잡으니깐 햇갈리기도 해서 이런 다량의 파일을 파일 갯수 단위로 폴더로 정리해주면 어떨까 해서 한 번 프로그램을 만들어 봤습니다. 폴더 열기를 통해 작업할 폴더를 선택한 뒤, 순차 작업 모드로 50개, 폴더 명은 section_{i} 로 정합니다. {i} 는 자동으로 프로그램에서 붙여주는 번호에 대한 특별한 지정자 입니다. 예를 들어서..

Article Thumbnail
[PyQT5] SFTP를 이용한 만능 자동 업데이트 런처 구현

프로그래밍/Python 2022. 4. 22. 00:36

위 게임은 "서든어택 2"의 게임 런처(실행기) 입니다. 이 게임은 말아먹은 뒤로 매일 SNS에 출시 임박 글이 올라오는 전설의 게임입니다. 대부분의 게임은 위처럼 일반적으로 * 런처라는 프로그램을 이용해서 다운로드, 업데이트, 실행 관리를 합니다. 제가 업무 자동화에 관련된 프로그램을 만들고 배포하면서 이러한 런처를 만들어야 할 상황이 생겼습니다. 매번 업데이트 하고 파일 배포하는게 정말 귀찮더라구요. * 런처 : 다른 소프트웨어를 실행시키기 위해 사용하는 소프트웨어 제가 배포하고 있는 프로그램에 대한 런처를 만들어서 자동 업데이트 하고 실행까지 처리하면 좋을 꺼 같아서 요새 GUI 프로그래밍에 한참 사용하고 있는 PyQt5 프레임워크와 파이썬을 통해서 한번 구현해봤습니다. 사실 이렇게 다운로드를 받을..

Article Thumbnail
[Python] 문자열 한줄씩 읽기

프로그래밍/Python 2022. 3. 26. 02:12

drift professional midnight scatter relevance visit . . . (생략) 다음과 같은 단어 사전을 C++ vector에 하드코딩으로 집어 넣어야 하는 상황이 생겼습니다. 하나씩 콤마찍고 쌍따옴표 넣기는 너무 귀찮죠? 이럴때 파이썬을 이용해서 한번 똑똑하게 바꿔봅시다. dic = """ drift professional midnight scatter relevance visit """.strip() lst = dic.split('\n') print(lst) >>> ['drift', 'professional', 'midnight', 'scatter', 'relevance', 'visit'] """ 를 활용해서 문자열을 전체적으로 넣고 양끝 공백을 strip() 으로 지..

Article Thumbnail
디시인사이드 간편 글 검색기(탐색기) v0.14

프로그래밍/Python 2022. 3. 3. 20:53

Python 으로 제작한 디시인사이드 글 검색기 입니다. 프로그램 설명 간단하게 설명드리자면 기존 디시인사이드 사이트의 문제점인 글 검색 시스템을 개선시켜주는 프로그램입니다. 첨부한 사진처럼 디시인사이드는 서버의 부하를 줄이기 위해 글을 10000개 단위로 끊어서 검색하는데 PC는 해당 페이지에서 원하는 데이터가 없으면 다음 검색, 모바일은 다음 글 찾기 버튼 등을 이용해서 노가다로 글을 찾아야 하는데 10000개 단위내에서 찾아낸 글을 페이지 단위로 정렬해서 보여주기 때문에 옛날 글을 찾는게 거의 불가능하고 보기도 매우 어렵습니다. 본 프로그램은 이 노가다를 조금이나마 해소해주는 프로그램으로써, 반복횟수 만큼 페이지, 다음 글 찾기를 자동으로 탐색하며 검색으로 옛날글을 찾는데 도움을 주는 프로그램입니다..

Article Thumbnail
[Python] *** is deprecated and will be removed from ***!!!!

프로그래밍/Python 2022. 2. 3. 00:48

파이썬 2 에서 파이썬 3 올라갈때만 해도 C++이랑 다르게 호환성을 버린 대신 언어 성능을 나름 극적으로 개선했었죠. 이제 파이썬 3 에서 버전 업그레이드가 있을때마다 잘 작동하던 모듈(라이브러리)이 펑펑 터져버리는 문제가 있었는데.. 메이저한 라이브러리들은 이런 문제가 많이 없다만 라이브러리 개발자들이 일을 너무 잘해서 그런가 사용 함수 이름을 자꾸 바꾸거나 개선 시키는 바람에 저렇게 deprecated 경고가 계속 뜨네요 ㅡ.ㅡ 나중에 버전 올라가면 원래 코드는 제대로 작동도 안할태니 방침대로 바꿔줘야 하는데.. Selenium 에서 find_element_by_css_selector 대신에 find_element(By.CssSelector.... 로 바뀐건 좋은 개선이라고 생각합니다만 Pandas..

Article Thumbnail
[PyQT] QLineEdit 숫자만 입력할 수 있게 하기

프로그래밍/Python 2022. 2. 1. 20:10

def set_only_int(self): self.onlyInt = QIntValidator() self.QLineEdit.setValidator(self.onlyInt) QMainWindow 가 상속되어 있는 Class에서 다음과 같이 코드 2줄 실행하면 됩니다. 저는 함수로 호출해서 함수로 묶어놨습니다. QLineEdit 부분에 사용하는 QLineEdit의 객체 이름을 입력해주세요. https://stackoverflow.com/questions/13422995/set-qlineedit-to-accept-only-numbers Set QLineEdit to accept only numbers I have a QLineEdit where the user should input only numbers...

[PyCharm] 파이참으로 파일 날렸을때 복구하는법

프로그래밍/Python 2022. 1. 21. 18:34

파이참으로 추가 작업을 진행하던 중 갑자기 인터프리터를 못찾고 맥을 못추더니 프로젝트를 다시 여니 main.py가 파이참에서 기본 제공하는 기본 py파일로 초기화 되는 불상사가 일어났습니다. 기존에 pyinstaller로 exe로 바꿔서 만들어놓은 파일과 *.pyc를 이용해 복구하려고 했는데 파이썬 버전이 높아서 안된다고 합니다.. 솔직히 멘붕이였는데 다행이 파이참에서 복구기능을 지원해서 살았습니다. 위처럼 복구할 프로젝트 위치에서 오른쪽클릭 - 로컬 기록 - 기록표시를 눌러주세요. 그러면 다음과 같이 프로젝트의 변경사향이 쭈욱 기록되어있습니다. 파이참이 무겁긴해도 그 값을 한다는게 느껴지는 기능이였네요. (사실 파이참 오작동으로 날려먹긴 한거지만요..) 어쨌든 변경 내용 이전으로 복구하니 다행스럽게도 ..

Article Thumbnail
[PyQT] pyinstaller로 exe만들때 패키지가 정상적으로 포함되지 않을때

프로그래밍/Python 2022. 1. 21. 00:55

ImportError: No module named lxml 제대로 패키지를 설치했는데도 파이썬 venv 가상 환경에서 pyinstaller로 exe를 만들면 다음과 같이 패키지를 못찾는 오류가 발생했습니다. lxml을 정상적으로 삭제했는데도요. 이 문제는 pyinstaller가 exe 작업을 할때 남아있는 파일들 때문이였습니다. __pycache__ 와 build 파일을 포함해서 pyinstaller가 만들어낸 찌꺼기 파일들을 전부 삭제하고 다시 빌드하시면 패키지를 정상적으로 인식합니다.

[PyQT] pyinstaller로 윈도우 아이콘, UI, 프로그램 아이콘 전부 exe에 포함시키기

프로그래밍/Python 2022. 1. 21. 00:30

PyQT와 Qt Designer로 아이콘 및 UI를 다루는건 디버깅을 할땐 아무 문제가 되지 않습니다만 pyinstaller로 exe로 패키징 하는 과정에선 문제가 발생할 수 있습니다. UI와 아이콘 파일의 위치를 못찾는것이죠. pyinstaller에 icon 또는 i 옵션에 아이콘 파일을 제공하면 됩니다만 위 사진처럼 내부 Window에는 적용되지 않음을 알 수 있습니다. setWindowIcon() 이용해 설정하는게 저 위 아이콘인데 pyinstaller 로 패키징을 끝내면 파일을 못찾는 문제가 발생하는 것이죠. 동일하게 ui 파일도 패키징 이후에 exe에 포함되지 않아서 ui를 못찾는다는 것은 곧 창을 못연다는 뜻이고 아예 프로그램 구동이 안되게 됩니다. 아이콘의 경우 저렇게 깨진상태라도 실행이 되..

Article Thumbnail
[PyQT] QTableWidget Item에 이미지와 텍스트 동시에 표시되게 하기

프로그래밍/Python 2022. 1. 20. 21:17

다음과 같이 표시하기 위해선 CustomWidget을 만들어서 Item으로 추가해야합니다. 아래 링크 참고해주세요. https://stackoverflow.com/questions/45896291/how-to-show-image-and-text-at-same-cell-in-qtablewidget-in-pyqt How to show image and text at same cell in QTableWidget in PyQt? I want to have a table with 2 or 3 columns with rows that shows image and text alongside each other in PyQt (I am using python3.5 and PyQt 5). First I chose QL..

Article Thumbnail
[PyQT] QTableWidget Column 숫자도 정렬되게 하기

프로그래밍/Python 2022. 1. 20. 17:08

QTableWidget 에서 sortingEnabled 라는 속성을 True로 바꾸면 Column 을 클릭했을때 자동 정렬을 지원합니다. 저는 Qt Designer 로 작업을 하고 있어서 저렇게 QTableWidget의 Property Editor 에서 체크만 해주면 되고, 만약에 직접 하드 코딩 하고 계신 분들은 self.QTableWidget.setSortingEnabled(True) 와 같이 써주시면 될 거 같습니다. 그러나 이 정렬 기능은 문자열에만 한정된 것으로 숫자 또한 문자로 인식하기 때문에 숫자는 제대로 정렬이 되지 않습니다. 해결 방법은 QTableWidget에 아이템을 추가해줄때 숫자인걸 알려주고 추가해주면 됩니다. rowPosition = self.articleView.rowCount..

Article Thumbnail
[Python] 아버지 업무 자동화 의뢰작 완성

프로그래밍/Python 2022. 1. 19. 23:39

적용 사항 - Python + Selenium + Requests 를 이용한 업무 자동화 :: 오버헤드가 큰 작업은 requests로 웹 요청 보내서 처리함. - PyQT5 + QT Designer 을 통해 GUI 작업 완료된 것으로 터미널에서 실행하지 않고 간편히 버튼 몇개만으로 업무 자동화 가능 - 쓰레드 처리로 프로그램 동작 중에 GUI 업데이트 가능. 응답없음 뜨지 않고 프로그램이 뻗지 않음. - GUI는 정보 유출 문제로 공개하지 않음. (사실 이게 제일 중요한거 아닌가..? ㅎㅎ;;) 아버지 의뢰작으로 만든 파이썬을 통한 업무 자동화 입니다. 파이썬으로 GUI는 난생 처음 작업해봤는데 형식 조금만 틀려도 튕겨버리고.. 특히 동적 타입언어라서 검사가 느슨하다보니 인터프리터 언어 특성상 컴파일 언..

Article Thumbnail
[Python] Selenium 스크롤 클릭해서 수동으로 내리기

프로그래밍/Python 2022. 1. 16. 16:36

Selenium으로 아버지 업무 자동화를 도와드리면서 저기 위 사이트 레이아웃 처럼 되있는 곳의 내부 스크롤(Inner Scroll) 을 내려야 하는 상황이 생겼습니다. 저 내부 스크롤을 내리면 스크롤 왼쪽에 보이는 표가 동적으로 로딩되면서 보여지는데 저 스크롤을 살짝식 내리면서 동적 테이블(Dynamic Table) 의 요소를 로딩하고 데이터를 가져오는게 목표였습니다. 그런데 보통 Selenium에서 스크롤을 내리는 방법을 할때 직접 클릭하는 방법을 사용하는게 아니라 JS를 직접 execute시켜서 내리는 방법이 대부분입니다. 이게 가장 좋은 방법이기도 하구요. 그런데 문제는 지금 제 Selenium 환경이 사이트 특성상 IE Driver을 사용하고 있고 자바스크립트로 내리면 화면은 내려가는데 JS로 ..

Article Thumbnail
[Python] PyQt5 학습 정보, 비동기 작업, 쓰레드 작업 등 정보 모음

프로그래밍/Python 2022. 1. 14. 18:05

PyQt5 쓰레드 이용하여 비동기 작업으로 GUI 응답없음 방지하기 (Best Example) https://ybworld.tistory.com/39?category=929856 [Python/파이썬] PyQt5 사용시 필요한 쓰레드 개념 이해 : 파이썬 GUI 응답없음 해결 방법 - 2 ※ 이 글을 쓰는 사람은 SW 비전공자입니다. ※ 개인 공부를 위해 정리하는 글이며, 작성한 코드들은 효율성, 깔끔함(?) 등과는 거리가 멀 수 있습니다. 1편 : 2021.03.06 - [코딩/Python] - [Python/파이썬] ybworld.tistory.com Pyside6에서 Material(Modern) Design하기 https://www.youtube.com/watch?v=Jn0PpzB14Y8 http..

Article Thumbnail
시놀로지 NAS + JupyterLab 원격 IDE 환경

프로그래밍/Python 2022. 1. 4. 00:28

위 사진은 시놀로지에서 서버가 돌아가고있는 JupyerLab 환경입니다. 포트포워딩도 되어있어서 비밀번호만 알면 언제 어디서든지 url로 접속해서 Python 코딩이 가능합니다. 밖에서 백준풀때나 코딩으로 허세부리고 싶을때 유용하게 쓰고 있습니다. 속도는 네이티브 환경에서 하는거랑 비슷비슷한데 당연히 네이티브보단 느립니다. 저희집에 컴퓨터가 노트북 포함 4대쯤 있는데 이리저리 왔다갔다 하면서 해도 NAS를 기반으로 연동되서 매우 유용합니다. Anaconda나 JupyerLab(또는 Jupyter Notebook) 을 컴퓨터마다 깔아서 라이브러리가 따로 관리되는게 상당히 번거롭거든요. 아마 군대에 있었음 유용하게 썼을건데요.. ㅎㅎ 별로 말하고 싶지 않군요.

Article Thumbnail
[Python] Selenium + IEDriver 성능 개선 방법

프로그래밍/Python 2021. 11. 1. 02:40

Selenium + ChromeDriver 조합 자체도 느려서 웹 사이트 뜯어가면서 requests 보고있는 판국에 굳이 인터넷 익스플로러 쓰겠다고 Selenium + IEDriver을 쓰는 분들이 얼마나 많을까 싶지만 지금 제가 아버지 업무자동화를 위해 만들고 있는 사이트가 구닥다리라 Active X + 보안 유틸리티 떡칠이라는 끔직한 조합 덕에 어쩔수 없이 IEDriver을 쓰고 있습니다. IEDriver을 쓰면서 조금의 팁을 작성합니다. 1. IEDriver이 아예 작동하지 않을때 https://pgh268400.tistory.com/123 [C#] Selenium IEDRIVER이 작동하지 않을때 해결법 Selenium으로 IEDriver을 제어하면 일부 컴퓨터에서 프로그램 구동이 되지 않고 소리..

Article Thumbnail
[Python] 디시인사이드 글 검색 크롤링 / 파싱

프로그래밍/Python 2021. 10. 30. 19:11

import time import requests, re from bs4 import BeautifulSoup from IPython.core.display import display, HTML #봇 차단을 위한 헤더 설정 headers = { "Connection" : "keep-alive", "Cache-Control" : "max-age=0", "sec-ch-ua-mobile" : "?0", "DNT" : "1", "Upgrade-Insecure-Requests" : "1", "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/53..

Article Thumbnail
비트코인 픽 사이트와 연동해서 텔레그램 알림을 주는 프로그램을 개발했습니다

프로그래밍/Python 2021. 10. 11. 02:16

비트코인 종목 추천 사이트와 연동하여 종목 추천이 이루어지는 오전 12:20, 오전 9시 정해진 시간에 따라 사이트에서 데이터를 가져와서 텔레그램으로 알림을 주는 프로그램입니다. 원래는 시간당 n만원씩 받고 외주 받는 형태로 진행하는데 같이 투자 진행하시는 분이 수익 내는데 도움도 많이 주시고 하셔서 특별히 공짜로 만들어드렸습니다 ㅎㅎ 원리는 간단하게 사이트에 자동으로 로그인한뒤 일정시간마다 requests를 보내고 나오는 response를 정리해서 Telegram 봇에 채팅을 보내도록 시키는 형태입니다. 일정시간마다 실행하는건 집에 24시간 돌아가는 저전력 NAS서버 시놀로지 작업 스케줄러를 이용해서 실행합니다. 아무래도 시놀로지가 리눅스 기반이라 크롬 드라이버는 사용이 안되서 Python의 reque..

Article Thumbnail
[Python] smi 자막 특정 위치부터 싱크 조절하기

프로그래밍/Python 2021. 9. 22. 02:00

from easysmi import * #단일 파일 처리 folder = 'C:/자막/' filename = '[SubsPlease] Tokyo Revengers - 02 (1080p) [B66CEAA7].smi' p = parse_smi(folder + filename) search_line = find_line_by_text(p, "sub by") if search_line != -1: s = sync_shift(p, search_line, -10000) s = sync_shift(s, 0, 1300) make_dirs(folder + 'output') #make output folder new_path = folder + "output/" + filename file_save(new_path, s)..

Article Thumbnail
[Python] 인코딩 오류 없이 텍스트 파일 읽기

프로그래밍/Python 2021. 9. 17. 20:57

def read_file(path): f = open(path, "r") line = f.readline() data = "" while line: data += line line = f.readline() f.close() return data smi 자막 파일을 열어서 싱크 조절을 위해 다음과 같이 코딩하고 즐거운 마음으로 실행을 하였습니다. UnicodeDecodeError: 'cp949' codec can't decode byte 0x01 in position 1: illegal multibyte sequence 어김없이 등장하는 오류.. 인터넷에 검색해보니 수많은 예제가 뜨네요. 인코딩이 안 맞아서 안 열리나 봅니다. 파이썬은 기본적으로 파일이 ANSI로 작성되었다고 가정하고 cp949라는 코덱..

Article Thumbnail