Python 33

[python3] smtp 로 여러명에게 이메일 보내기

삽질을 거듭하다가 기록용으로 남깁니다. def smtphandler(self): smtp = None mailconfig = self.config['primaryServer'] if not mailconfig['server'] or not mailconfig['port'] or not mailconfig['uid'] or not mailconfig['pw'] or not mailconfig['sender']: mailconfig = self.config['secondaryServer'] if 'smtp/starttls': smtp = smtplib.SMTP('smtp.gmail.com', 587) elif 'ssl/tls': smtp = smtplib.SMTP_SSL('smtp.gmail.com', 46..

IT/python 2020.12.14

변수 범위 이해가 안감..

아래와 같이 a 값에 따라서 서로 다른 값을 갖는 dict 를 만들고 싶었습니다. def sendAlert(self, a, b, c, d): msg = {} data = {} content = None subject = None if a == 1: content = 'abc' subject = 'test' else: content = 'ddd' subject = 'test2' data['content'] = content data['subject'] = subject print(f'data={data}') 그런데 data = {} 만 나오네요... 같은 scope 일텐데... 이를 해결해보고자 content = 'abc' 바로 위에 global content 라고 넣으면 "content" is assig..

IT/python 2020.11.27

유니코드 문자열을 숫자로 변환했다가 복원하기

문자열을 숫자로 저장했다가 다시 복원하는 방법입니다. 아래 글 내용에 나오는 코드를 고쳐봤습니다. 더보기 바보팀1님의 Hellow 난독화하기 글을 읽었습니다. 저는 python v3.8 환경을 사용하는데 여기에서는 동작하지 않아서 동작하도록 고쳐봤습니다. 버전별로 처리해보기 위해 코드를 문자화 하는데에 샐리님 블로그 글을 참조하였습니다. # 출처: https://qkqhxla1.tistory.com/485 # 참고: https://saelly.tistory.com/171 import sys v2 = """(lambda _, __, ___, ____, _____, ______, _______, ________: getattr( __import__(True.__class__.__name__[_] + []._..

IT/python 2020.10.26

[python]오류 발생시 호출 스택 출력하기

try except로 오류 발생을 처리하다 보면 개발 도중에 자주 오류가 발생할 때 오류 추적이 쉽지 않은 경우가 있습니다. vscode로 실행을 직접 할 수 있는 경우라면 GUI로 편하게 디버깅 가능하지만, vscode 가 지원하지 않는 아키텍처(예를 들면, mips라든지, mips라든지...)인 경우에는 pdb 사용법을 익혀야 되는데 gdb처럼 맘껏 잘 동작하지는 않습니다. import traceback 을 하고 exception 발생했을 때 traceback.format_exc() 값을 출력해주면 됩니다. try: .... except Exception as e: print('ERROR::{}, {}'.format(e, traceback.format_exec())) 작성한지 시간이 지나서(수정 시간..

IT/python 2020.09.28

[python] json dump/dumps/load/loads 구분하기

대충 이해하고 쓰다가 오랜만에 소스를 보니 헷갈립니다.개인적으로 정리할 목적으로 글을 남깁니다. json.dumpjson.dumpsdump 계열은 파이썬의 객체(dict 등)를 다른 형태로 변환합니다.dump 함수는 파이썬 객체를 스트림 객체(파일 등)로 변환합니다.dumps 함수는 파이썬 객체를 한줄의(직렬화된) json 문자열로 변환합니다.오류Expecting value: json.loadjson.loadsload 계열은 대상을 파싱해서 파이썬의 객체(dict 등)로 변환합니다.load 함수는 스트림 객체(파일 등)에서 데이터를 읽어 파이썬 객체(dict 등)로 변환해줍니다.loads 함수는 json 문자열을 파싱해서 파이썬 객체로 변환해줍니다.오류Expecting value: line 1 colum..

IT/python 2020.09.07

[python] Popen 을 통해 dict 주고 받기

Popen 을 사용해서 하위 프로세스를 생성하는 구조인데 단순 데이터만 주고 받는 것을 상정하다가 사전 구조인 dictionary 데이터를 주고 받으려니 삽질을 길게 하게 되네요.. from subprocess import Popen, PIPE import json ...(중략)... for proc in self.list: proc = Popen(['python3', proc.name], stdin=PIPE, stdout=PIPE) ...(중략)... for proc in self.list: proc.stdin.write('hi kids\r\n'.encode()) proc.stdin.flush() 원래는 이런 구조였습니다. 하지만 write 하는 곳에서 dict 형태의 데이터를 넘겨야 할 필요가 생겼을..

IT/python 2020.08.12

[python] 설치된 패키지 확인

importlib.lib.find_spec() 을 사용해서 지정된 이름의 파이썬 모듈이 존재하는지 확인할 수 있습니다.def isPythonModuleInstalled(name:str) -> bool: import importlib.util spec = importlib.util.find_spec(name) if spec is None: return False else: return True다음과 같이 쓰면 False 가 반환되야 합니다. 파이썬 모듈로 vim은 없으니깐요print(isPythonModuleInstalled('vim'))더 자세한 방법은 이 글을 참고하시기 바랍니다.

IT/python 2020.07.29

[python] 서로 다른 경로에 있는 모듈 import 하기

요새는 파이썬을 만지고 있습니다.초짜이다 보니 삽질하면서 적응해가고 있는데 내가 만든 모듈을 불러들여야 하는데 안불러지는 경우가 발생했습니다.대략 다음과 같은 폴더 구조입니다. aa.py 에서 bb.py 가 필요한데.. from dirB import bb.py 하니까 없는 모듈이라고 뜹니다..찾아보니 파이썬의 from, import 는 현재 위치 기준 상대경로로 인식된다고 합니다. 그래서 sys.path 에 절대경로 값을 추가해 준 다음 import 를 해야 하는 상황입니다.답만 나열하자면 aa.py 에서 bb.py 가 필요한 시점에 다음과 같이 작성했습니다.import os, sys# 프로젝트 root\dirB를 import 참조 경로에 추가sys.path.append( os.path.join(os.p..

IT/python 2020.07.22