Programing Language/Python

Programing Language/Python

Poetry을 통한 의존성 관리하기

이번에는 파이썬에서 사용하는 의존성 관리 중에 하나인 Poetry에 대해서 알아보고자 한다. Poetry을 왜 사용하나? Poetry는 다음과 같은 이점들을 제공한다. 의존성 해결 : 예를 들어 패키지 1, 패키지 2가 있을 때, 패키지 2가 패키지 1의 2.0 이상의 버전을 요구할 경우 pip에서는 패키지 1을 1.0 버전으로 설치해도 아무런 문제가 없지만 poetry에서는 특정 버전 이상이 아닐 경우 설치가 되지 않는다. 의존성 잠금 : pip는 lock파일이 없고, 직접 requirements.txt을 작성해야하지만, poetry는 lock 파일과 pyproject.toml(requirements.txt처럼 설치한 패키지를 리스팅 해놓은 파일)을 자동으로 생성하고 업데이트한다. 가상환경 : pip는..

Programing Language/Python

unittest을 통해 테스트 코드 작성하기

이번에는 unittest을 통해서 python 테스트 코드 작성 방법과 테스트 코드를 작성하는 이유에 대해서 조금 포괄적으로 다뤄보고자 한다. 테스트코드 테스트 코드를 작성하면 좋은 이점들을 아래와 같이 정리했다. 디버깅 비용(시간) 절감 : 코드를 작성하다 보면, 오류나 결함을 수정하는 데에 있어서 많은 소요비용을 지불한다. 테스트 코드는 개발자가 작성한 코드를 실행하여 예상된 결과가 나오는지 확인하는 데 사용된다. 코드 변경에 대한 불안감 해소 : 가끔 코드를 수정하다 보면 잘 되던 것들도 안 되는 경우가 생기는데 이러한 문제를 해결하게 도와준다. 더 나은 문서자료 : 개발자는 항상 좋은 코드를 작성하기 위해서 노력할 필요가 있다. 테스트 코드는 이런 부분에 있어서 일반적인 문서 자료보다 신빙성 있는..

Programing Language/Python

문자열 모듈 String을 이용해서 문자열 모음 가져오기

코딩 테스트 문제 (백준, 프로그래머스)를 풀때, 조건에서 a - z까지의 영어 문자열이 필요하다던가 1 ~ 9까지의 숫자 혹은 그 외의 어떤 문자들의 집합이 필요한 경우가 많습니다. 이런 경우에는 a - z까지 일일이 다 적어줘야 하기 때문에 만사 귀찮은 문제가 되어 버리는데요 이러한 문제를 해결하기 위해서 파이썬에서는 String이라는 모듈을 제공하고 있습니다. string 모듈이 뭔가요? Python 에서는 특정 분류에 따른 문자 집합을 제공하는 모듈이 존재하는데 이를 string 모듈이라고 합니다. 앞서 설명했듯이 주로 문자열에 대한 규칙성이나 관련 코드를 작성할 때 자주 사용합니다. Python string 모듈에서 제공하는 문자의 집합은 아래와 같습니다. string.ascii_letters ..

Programing Language/Python

requests, bs4, selenium4을 통해 웹 페이지 데이터 크롤링하기

일반적으로 인터넷을 이용하면서 웹에 있는 데이터를 가공하거나 사용해야 하는 경우가 빈번 합니다. 특히 사이트에서 어떤 가격에 대한 데이터를 받아 엑셀로 저장하여 정리하여야 한다던가, 여러 페이지들을 돌면서 최저가 아이템을 구입하길 원하는가 등 여러 니즈들이 있을 수 있는데, 이때 주로 requests, bs4, selenium4을 이용하여 프로그램을 개발하여 해결합니다. 이번에는 파이썬을 통해 해당 니즈들을 해결하기 위해 동적인 웹 페이지에 대한 데이터를 크롤링하는 방법에 대해서 알아보고자 합니다. - 웹 데이터 크롤링이란 프로그램이 웹사이트를 정기적으로 돌면서 정보를 추출하는 것을 의미 합니다. 동적 페이지 vs 정적 페이지 그리고 데이터 수집 정적, 동적 페이지라는 말이 생소하게 들릴 수 있는데 간단..

Programing Language/Python

코드 포맷터의 의미와 파이참에서 Black으로 코드 스타일 자동화 하기

코드 포맷터 코드를 작성하는 방법은 사람마다 다릅니다. 배운 환경이 다를 수도 있고, 사람들이 코드를 봤을 때 느끼는 편함이 사람마다 다를 수도 있기 때문인데요 하지만 다른 사람들과 협업을 할 때 다들 각자의 코드 스타일만을 추구한다면, 다른 사람들이 나의 코드를 읽기에 어려움을 겪을 수 있습니다. 개발자들은 이런 문제점을 해결하기 위해서 고민을 많이 해왔는데요, 이러한 문제점을 해결하기 위해서 코드 포매터를 만들었습니다. 코드 포매터 : 정한 코딩 컨벤션(코드 작성 스타일 규칙)에 따라 코드 스타일을 알아서 정리해 주는 도구를 말합니다. Black Black이란 최근 파이썬 커뮤니티에서 가장 널리 쓰이고 있는 코드 포맷터의 한 종류 입니다. Black : https://black.readthedocs...

Programing Language/Python

pyautogui을 이용하여 자동화 기능 만들기

 최근에 자원봉사로 행정업무 관련해서 봉사활동을 갔습니다. 봉사활동을 하던 도중에 '충분히 python과 pyautogui을 이용하면 이런 쓸데없는 곳에 시간을 낭비하지 않아도 될 텐데;'라는 생각을 했었습니다. 그래서 짤막하게 알아두고 있었던 pyautogui 라이브러리를 사용하여 프로그램을 만들어서 업무를 진행했었는데 공무원들의 환호를 받았었습니다. 이런 컴퓨터 행정업무나, 단순노동에서 힘들어하시는 분들과 pyautogui을 오랫동안 쓰지 않았던 스스로를 위해 해당 내용을 한번 더 정리해보고자 합니다. Pyautogui 왜 쓰는데요? Pyautogui는 python을 이용하여 마우스나 키보드 알림창을 만들때 도움을 주는 라이브러리입니다. API가 되게 심플하게 제작되었으며 윈도나 맥, 리눅스에서도 ..

Programing Language/Python

추상 클래스와 덕 타이핑

최근 디자인 패턴을 공부하면서 Java언어의 예제를 자주 접하다 보니 파이썬에도 추상 클래스와 인터페이스에 대한 개념이 있지 않을까 해서 관련 정보를 찾아보고 정리하였다. 그중에 나온 개념이 파이썬에서 사용하는 추상클래스와 덕 타이핑이라는 개념인데 이를 공부하고 정리해 보았다. 추상 클래스 파이썬은 추상 클래스(abstract class)를 제공한다. 추상 클래스란 구현 내용이 없고 메서드 목록만 가진 클래스이다. 추상클래스 자체로는 인스턴스화가 불가능하며, 클래스의 메서드를 상속받는 파생 클래스에게 구현하도록 강제하기 위해 사용된다. 파이선에서 추상 클래스를 사용하기 위해서는 ABC클래스와 @abstractmethod을 임포트 하여야 한다. from abc import * class 추상클래스명(met..

Programing Language/Python

requests 기본 동작 방식과 session()

최근 자동화나 데이터 관련해서 외주를 받아 작업을 하고 있다. 정적 웹 페이지라고 판단된다면 request, bs4을 이용해 처리했고 동적인 페이지라고 생각이 들면 무조건 selenium으로 페이지에 직접 들어가 태그를 탐색해서 데이터를 가져오곤 했다. 하지만 selenium을 이용하여 코드를 작성하면 속도가 느리다는 문제와 크롬드라이버의 의존성이 크다는 문제가 있었다. 설상가상으로 이번에 외주 받은 프로그램에서 사용하는 크롬 버전은 116.0.5845.140이었는데 이때 크롬에서 [$TBD][1472492] CVE-2023-4572 결함으로 인해서 140 버전의 크롬 드라이버를 다운로드하지 못해 난처한 상황이 맞이하곤 했다. (다행히 패치한 141 버전이 외주 마감일 2일 전에 배포되어서 외주를 성공적..

Programing Language/Python

openpyxl로 엑셀 데이터 다루기

Openpyxl 공식 문서 : https://openpyxl.readthedocs.io/en/stable/index.html openpyxl - A Python library to read/write Excel 2010 xlsx/xlsm files — openpyxl 3.1.2 documentation 1. Please join the group and create a branch (https://foss.heptapod.net/openpyxl/openpyxl/) and follow the Merge Request Start Guide. for each independent feature, don’t try to fix all problems at the same time, it’s easier for ..

JHeaon
'Programing Language/Python' 카테고리의 글 목록