전체 글 384

[Pyinstaller] 생성한 exe 파일이 Trojan 바이러스로 인식되는 문제

[개요] pyinstaller는 python 코드를 배포하기 위해 실행파일 (exe)로 만들어주는 편리한 패키지이다. 패키지 다운로드 pip install pyinstaller 실행파일 생성 pyinstaller -n "파일이름" -w --onefile --clean "main.py" --icon "아이콘.ico" 패키지를 받은 후, 위 명령어를 입력하는 방식으로 자주 사용하고있다. --onefile 옵션을 추가하는 것으로 프로그램이 하나의 exe 파일에 정리되어서 배포에도 아주 편리하고, 사용자 입장에서도 좋다. 이렇게 생성한 exe 파일은 대부분의 환경에서 잘 작동하지만, 몇몇 PC에서 해당 파일을 Trojan 바이러스로 인식하여 Window Defender에서 자동으로 삭제하는 문제가 있다. 물론 ..

logging 모듈을 사용하여 로그를 남기는 방법

import logging # 로그 설정 my_log = logging my_log.basicConfig(filename="log_sample.log", level=logging.INFO) # 로그 생성 및 기록 my_log.debug('이 메시지는 디버그용 로그입니다.') my_log.info('정보성 로그 메시지입니다.') my_log.warning('경고 메시지입니다.') my_log.error('에러 메시지입니다.') my_log.critical('심각한 문제가 발생했습니다.') debug부터 차례대로 로그의 레벨 순서대로 작성하였고, 위와 같이 코드를 작성하면 로그 설정에서 입력한 logging.INFO 레벨 이상의 메시지가 기록되게 된다.

기존의 list의 값을 이용해서 새로운 list를 만드는 방법 list comprehension

아래 방법을 알기 전에 내가 기존에 사용하던 방식 배열을 선언해준 후 각 값에 2를 곱해서 배열에 담기 때문에 코드가 많이 지저분하다. my_list = [1, 3, 5, 7, 9] squares = [] for x in my_list: squares.append(x * 2) print(squares) 위의 과정을 일부 생략하고 python문법으로 작성한 코드 my_list = [1, 3, 5, 7, 9] squares = [x * 2 for x in my_list] print(squares) 위의 방법을 selenium에서 다음과 같이 활용할 수 있다. # 기존의 코드 number_list = [] for number_link in number_link_list: number = number_link...

python decorator

python에서의 decorator는 어떤 함수를 꾸며서 새로운 함수를 만들 때 사용할 수 있다. 아주 간단한 예시 def add_print_to(original): def wrapper(): print("함수 시작") original() print("함수 끝") return wrapper @add_print_to def print_hi(): print("안녕") print_hi() 각 함수를 작동시키기 전이나 후, 동일한 코드를 반복적으로 작성할 때, 데코레이터 함수를 사용하면 아주 유용하다. 객체지향 프로그래밍에서 이 데코레이터 함수는 아주 많이 사용된다.

Python의 포함 연산자 in, not in

문자열, 배열, 튜플, 딕셔너리에 사용할 수 있다. 1. 문자열(strings) ########### in ########### if 'p' in 'python': print(True) else: print(False) ------------------------- True ########### not in ########### if 'k' not in 'python': print(True) else: print(False) ------------------------- True 2. 리스트(list) ############## in ############## if 'a' in ['a','b','c']: print(True) else: print(False) -------------------------..

dict list를 key1을 기준으로 그룹화하고, 각 그룹에 속하는 key2들을 모으는 방법은 다음과 같습니다.

from collections import defaultdict data = [ {'claim_number': '22756365', 'order_number_list': '2102940323'}, {'claim_number': '22787274', 'order_number_list': '2133237895'}, {'claim_number': '22788336', 'order_number_list': '2134958649'}, {'claim_number': '22788336', 'order_number_list': '2134958648'}, {'claim_number': '22788336', 'order_number_list': '2134958647'}, {'claim_number': '22788336',..

python pyinstaller exe file decomplie 과정

기억을 위해 간략하게 적는다. 준비물 1. pyinstaller로 빌드된 exe파일 여기서는 "app.exe"이라는 파일이라고 가정 2. pyinstxtractor 코드 설치 git clone https://github.com/extremecoders-re/pyinstxtractor.git 3. 코드 해체 python .\pyinstxtractor.py app.exe 4. app_extracted폴더내에 디컴파일 원하는 pyc 파일 찾기 ex) 저의경우 main.pyc였음. 5. uncompyle6로 디컴파일 시도 pyc 파일 to py파일로 변환 pip install uncompyle6 uncompyle6 main.pyc > main.py