• 0) 정규식
    • 알파뱃 대소 구분없이 정규식으로 찾아서 조지기
      • https://zephyrus1111.tistory.com/302
      • word_list = [
        	'apple', 'banana', 'cherry', '...',
        ]
        sentence = "I am CheRRy! 하하하 호호호 1234567890"
        
        for word in word_list:
        	if word in sentence.lower():
        		pattern = re.compile(word, re.IGNORECASE)
        		match = re.search(pattern, sentence)
        		match_group = match.group() if match is not None else None
        		sentence = sentence.replace(match_group, f"<color=#FF0000>{match_group}</mark>", 1)
        		break
        ...
    • 태그 사이값 찾기
      • output = re.findall(r"<태크>(.*?)</태크>", input, re.DOTALL)
  • 1) __ __
    • 파이썬 패키지 구성을 위한 __init__.py 및 __all__ : https://chancoding.tistory.com/207
    • __call__ : ...
    • ...
  • 2) @wrapper
    • ...
  • 3) PYTHONUNBUFFERED
    • https://docs.python.org/ko/3/using/cmdline.html#envvar-PYTHONUNBUFFERED
    • 예) env PYTHONUNBUFFERED = 1
    • 예) python -u ...
  • 3) PYTHONPATH, PYTHONHOME, ...
    • https://docs.python.org/ko/3/using/cmdline.html#envvar-PYTHONPATH
    • 예) PYTHONPATH=/Users/Test/src python3 -u -X utf8 /Users/Test/src/test.py
  • 4) UTF-8 모드
    • https://docs.python.org/ko/3/using/windows.html#utf-8-mode
    • 예) python -X utf8 ...
  • 5) logging
    • https://zephyrus1111.tistory.com/442 
    • StreamHandler : 
      • stdout | stderr 으로 출력
    • FileHandler : 
    • RotatingFileHandler : 
    • TimedRotatingFileHandler : 
      • https://docs.python.org/ko/3/library/logging.handlers.html#timedrotatingfilehandler
    • import logging.handlers
      
      formatter = logging.Formatter('%(asctime)s [%(threadName)s] [%(levelname)s] %(message)s')
      
      stream_handler = logging.StreamHandler()
      stream_handler.setLevel(logging.INFO)
      stream_handler.setFormatter(formatter)
      
      timed_handler = logging.handlers.TimedRotatingFileHandler(
          filename='log/project.log',
          when='midnight',  # S:초단위 M:분단위 H:시단위 D:일단위 midnight:자정
          interval=1,
          encoding='utf-8')
      timed_handler.setLevel(logging.INFO)
      timed_handler.setFormatter(formatter)
      timed_handler.suffix = "%Y%m%d"
      
      logging.basicConfig(
              level=logging.INFO,
              #format="%(asctime)s [%(threadName)s] [%(levelname)s] %(message)s",
              handlers=[
                  stream_handler,
                  timed_handler,
              ]
          )
      my_logger = logging.getLogger('my-project-app')
      
      my_logger.info(f"my_logger = {my_logger}")
      my_logger.info(f"my_logger_handlers = {my_logger.handlers}")
  • 6) loguru
    • from loguru import logger
      
      def log_0(record):
          return bool("log_0" in record["extra"])
      
      lv = os.getenv('MY_LOG', default='DEBUG')
      logger.remove()
      logger.add(sink=sys.stderr, colorize=True, format=r"<green>{time}</green> {level} <level>{message}</level>", filter=log_0, level=lv)
      #logger.add(sink="logs/local.{time}.log", rotation="1 days", retention="1 months") # backtrace=True diagnose=True
      my_logger = logger.bind(log_0=True)
  • 7) @lru_cache
    • ...
  • ...

-끝-

'랭귀지&프레임웤' 카테고리의 다른 글

FastAPI : SQLModel  (0) 2024.11.30
python async  (0) 2023.04.07
파이썬 프로그래밍  (0) 2023.01.29
python ruff & uv  (0) 2022.10.26
Python DI  (0) 2022.09.04

+ Recent posts