파이썬
파이썬 셀레니움 크롬드라이버 ChromeDriverManager 버전 오류 feat.230818 수정
*********************************************** 20230818 - 크롬 드라이버 매니저 라이브러리 최신버전으로 업데이트 하면 해결됩니다. ------------------------------------------------------------------------------------- 삽질 시간 : 1시간 삽질 사유 : 크롬이 자동으로 업데이트 되어버렸습니다. 크롬은 업데이트 되었지만 크롬 드라이버 버전이 업데이트가 안된 상태. There is no such driver by url 오류 이때, ChromeDriverManager().install() 을 통해 자동 최신 드라이버로 설치하여 사용하려면 문제가 발생함. ChromeDriverManager 는 현재..
파이썬 dict list 특정 key 로 중복제거
자주쓰는데 계속 찾기 귀찮아서 씀 dict 특정 key 중복 list({v['id']:v for v in data}.values()) https://sanghaklee.tistory.com/60 [Python] 리스트 딕셔너리 중복 제거 python how to remove duplicate dict in list https://stackoverflow.com/questions/11092511/python-list-of-unique-dictionaries dict 전체 중복 # 순서가 보장되지 않음 list(map(dict, set(tuple(sorted(d.items())) for d in data))) # 순서가 보장 sanghaklee.tistory.com
파이썬 logging 에서 setLevel 이 not work 할 때
삽질 30분 삽질 사유 콘솔에 로그가 찍히도록 StreamHandler 를 추가하고, 파일에도 찍도록 FileHandler 를 추가했다. 정상적이게 콘솔에 찍히고, 파일에도 출력됩니다. 그런데, 나오지 않았던 다른 라이브러리에 debug 로그가 쭉 찍히는걸 보고 setLevel를 INFO 레벨로 설정했는데 왜 나오지? 했는데, 30분의 삽질 끝에 각 핸들러에도 로그 레벨 설정이 가능한걸 알았다. import logging from logging.handlers import TimedRotatingFileHandler # 로그 생성 logger = logging.getLogger() # 로그의 출력 기준 설정 logger.setLevel(logging.INFO) # 여기 설정 했는데 적용이 안된다! # 로..
문자열 원하는 길이로 자르기
str1 ='abcdefg123456789' length = 5 [str1[i:i+length] for i in range(0, len(str1), length)] # 리스트로 봔환됨 # ['abcde', 'fg123', '45678', '9']
파이썬 filter, lambda를 이용한 새로운 리스트 만들기
now_list = [1, 2, 3, 4, 5, 6, 7] except_list = [1, 2, 3, 4] new_list = list(filter(lambda l: l not in except_list, now_list)) print(new_list) # [5, 6, 7] now_list에서 except_list에 있는 값을 제거 후 새로운 new_list를 만든다.
셀레니움 크롬 드라이버 이용하여 실행 파일 만들 때 tqdm 오류
셀레니움에서 크롬 드라이버를 다운로드 받을 때 console 창에 tqdm 으로 다운로드 bar를 만들어서 그립니다. pyinstaller 로 exe 파일 등 을 만들 때 이 console 창이 필요없으니 안뜨게 하는데, 이 때, tqdm 오류가 납니다. Lib\site-packages\tqdm\std.py 해당 파이썬 프로그램에 패키지에 해당 파일 구문을 수정해야 됩니다. def print_status(s): len_s = disp_len(s) buffer = io.StringIO() sys.stdout = buffer sys.stderr = buffer # fp_write('\r' + s + (' ' * max(last_len[0] - len_s, 0))) last_len[0] = len_s 해당 p..
pyside6 에서 QUiLoader 로 ui 불러와서 사용할 때 이벤트 동작 안될 때
from PySide6.QtUiTools import QUiLoader class Dialog(Dialog): def __init__(self): super(Dialog, self).__init__() loader = QUiLoader() ui = loader.load('ui/dialog.ui') # 로더로 ui 를 불러온다. ui.installEventFilter(self) # 이벤트 필터를 self 를 사용하여 해당 클래스에 있는 이벤트 필터로 재정의 def eventFilter(self, o, e): if e.type() == QEvent.Type.MouseButtonPress: # 해당이벤트에 대해 동작 print("click") return True return False # 다른 이벤트의 대해..