본문 바로가기
반응형

Python123

Python - Http Retry 및 while 을 통한 재시도하기 요즘 REST API 참으로 많이 사용된다. 그런데 HTTP 호출을 사용하다보면, 받아주는 서버가 정상적으로 회신을 주지 않는 경우가 있다. 이러한 경우 어떻게 조치하는게 좋을지 Python에서 제공하는 모듈과 일반적인 방법에 대해서 정리해 본다. 1. while 문 사용 가장 일반적으로 사용되는 방식은 while 문을 이용한 특정 조건이 완료될 때 까지 반복 하는 방법이다. while 문 내에 아래와 같이 1이 나올 때까지 실행하는 방식으로 조건이 완료될 때까지 실행할 수 있다.\ import random while True: number = random.randint(0,1000) if number == 1: print('Bingo') break else: print(number) 이를 조금 웹 코드.. 2024. 3. 3.
Python - string 문자열 원하는 구분자 기준으로 나누기 오늘은 최근에 특정 문자열 갯수를 넘어가는 글에 대해서 조금 더 이쁘게 잘라 낼 수 있을까에 대한 고민하던 부분중에 개발을 진행한 부분에 대한 내용이다. 고민한 내용은 간단하다. \n 기준으로 문자열을 자르고 싶은데, \n을 기준으로 자르자니 너무 많이 문자열이 잘라지므로 이를 가장 알맞은 길이를 대입하여 자르고 싶었다. 그래서 생각한 규칙은 다음과 같다. 특정 길이 기반으로 문자열을 자른다. 만약 원하는 구분자가 해당 특정 길이 내에 있다면, 특정 길이를 안에 있는 구분자를 이용하여 자른다. 원하는 구분자가 특정 길이에 여러개 있다면 최대한의 크기를 유지 할 수 있었으면 한다. 원하는 구분자가 없는 경우에는 최대 크기로 자른다. 조건은 위 4가지 인데 실제 코드를 작성해 보니 생각보다 고려해야 할 포인.. 2024. 3. 3.
Python - 백그라운드/포그라운드 실행 유무 체크 가끔 스스로 내가 현재 백그라운드 실행인지, 포그라운드 실행인지를 체크해야 하는 경우가 발생한다. 이때 유용하게 사용할 수 있는 것이 바로 os.getpgrp()를 통해 현재 프로세스의 그룹과 제어 터미털의 값이 같으면 포그라운드라고 볼 수 있으며, stdout 파일 핸들을 실패하면 프로세스가 백그라운드에서 실행되고 있다고 알 수 있다. 파일 핸들을 얻을 때 예외로 실패되기 때문에 try/except으로 처리를 해줘야 한다. import os import sys def main(): try: if os.getpgrp() == os.tcgetpgrp(sys.stdout.fileno()): print 'Running in foreground.' else: print 'Running in background... 2024. 3. 3.
VSCode Error - Sorry, something went wrong activating IntelliCode support for Python. Please check the "Python" and "VS IntelliCode" output windows for details. 한동안 Python을 VS Code로 쓰면서 크게 의식하고 있지 않았는데, 오늘은 왠지 모르게 위 오류가 정말 거슬리는 하루 였다. 그래서 한번 위 오류를 해결한 내용을 정리해 본다. 위 오류가 발생하는 원인은 크게 2가지로 고민해 볼 수 있다. 첫째 - Visual Studio IntelliCode 플러그인의 문제 둘째 - Visual Studio Code의 Linting 의 문제 아마 첫번째 플러그인의 문제라면 버전을 바꿔서 설치해보는것이 가장 기본적인 액션 플랜이다. 이후에는 settings.json의 Python 설정을 찾아서 변경해보는 것이 좋다. 위 방식으로도 해결이 되지 않는다면, 두번째 문제에 대한 해결 방안인 Linting을 다시 설치해 보는것이 좋다. 2024. 3. 3.
VSCode - Pylint로 Python 코드 퀄리티 올리기 https://code.visualstudio.com/docs/python/linting 이전 글에서 에러 해결과 함께 정리해보았는데, 여기서 조금 Lint 부분만 정리해 본다. 우선 python 용 Linting 기능을 담당하는 pylint를 설치하자. pip3 install pylint 이후에는 Language Server를 Jedi로 설정할 것을 추천한다. 아래 설정 화면은 VSCode의 플러그인 메뉴에서 Python의 톱니 바퀴를 선택하여 환경설정을 선택할 수 있다. 그리고 아래와 같이 Jedi를 선택하자. 이렇게 구성한 이후 VS Code를 전체 종료하고 다시 설정을 진행해보기 바란다. 정상적으로 Linting이 완료되면, 아래와 같이 Problem 창에서 현재 코드의 오류, 경고등을 확인해 준.. 2024. 3. 3.
Python - Boto3 S3 대량 데이터 가져오기, paginator Boto3 라이브러리는 Python에서 AWS 리소스를 사용하기 위해 가장 많이 사용되는 라이브러리로 여기에서 최근 알게된 팁을 하나 정리해 본다. 아마 가장 많이 사용하는 기본적인 코드 방식은 다음과 같을 것이다. import boto3 client = boto3.client('s3') my_bucket = s3.Bucket('bucket_name') for file in my_bucket.objects.all(): print(file.key) 위 코드를 통해 기본적으로 쿼리를 진행하면 한번에 최대 1000개의 데이터만 가져올 수 있다. 하지만 기업에서 사용하는 데이터를 보통 더 많은 데이터를 보관하고 있기 때문에 1000개의 제한을 해결할 수 있는 방식을 추가로 제공하는데, ListObjectV2를 .. 2024. 3. 3.
Python - 코드 네이밍 스타일 (snake_case, camel_case, upper_case) 코드 네이밍은 서로 몇가지 규칙을 개발자들 사이에서 코드 가독성과 공유시 보다 이해가 쉽도록 하는데 있다. 필수도 지킬 필요는 없지만, 동일한 규칙을 사용하게 되면, 서로 다른 개발자가 개발한 코드라도 이해도가 높아지고 코드의 완성도가 높아지기 때문에 되도록이면 규칙을 정해서 사용하는 것이 좋다. 오늘은 Python 의 Linting highlights syntactical and stylistic problems와 Code Quality 로 활용할 수 있는 Linting 기능을 이용하면 Snake_case Name 경고를 볼 수 있는데, Python에서 추천하는 Code Naming인 Snake Case와 그외 많이 사용하는 Camel Case, 그리고 Upper Case에 대해서 정리해 보겠다. Sn.. 2024. 3. 3.
Python - reverse/reversed 리스트 역순으로 뒤집기 프로그램을 실행하다보면, list을 뒤에서 부터 실행해야하는 경우가 종종 발생한다. 이때 유용한 명령이 reverse/reversed 이다. 이 둘의 결과를 반환 유무의 차이가 있다. reverse 지정한 list를 역순으로 뒤집는다. test = [1,2,3,4,5] test.reverse() print(test) [5,4,3,2,1] reversed 지정한 list의 역순으로 뒤집은 결과를 반환한다. test = [1,2,3,4,5] print(list(reversed(test))) [5, 4, 3, 2, 1] for i in reversed(test): print(i) 2024. 3. 3.
Python - Pylint Error Code 테이블 전체 예외할 때 에러 코드 기준으로 해야 해서 여기에 정리해 본다. Ctrl + F 키로 에러 이름을 이용해 검색해서 보기를 권장한다. GitHub - janjur/readable-pylint-messages: List of pylint human readable message ids and dev readable codes 에러 비활성화 방법은 아래를 참고하기 바란다. 에러 코드를 확인하는 방법은 에러 이름을 통해 확인하고 코드를 기입하면 비활성화가 가능하다. Blogger 이메일 또는 휴대전화 accounts.google.com 2024. 3. 3.
반응형