Programming-[Backend]/Python (38) 썸네일형 리스트형 [TIL] Deepcopy, dict 순서 유지 1. Deepcopy: dict 어떤 원본 값을 변형하지 않고 다음 로직에서 사용하기 위해서는 deepcopy를 사용하여 참조되는 값의 변경이 일어나지 않도록 해줘야한다. some_value = _get_some_value( ... ) # some_value = {"a": 1, "b": 2} another_result = _get_another_result(some_value=some_value) def _get_another_result(some_value): result = some_value result["a"] = 3 return result 위 코드처럼 간단한 경우에는 한눈에 _get_another_result를 실행하면서 some_value 값도 변경된다는 것을 인지할 수 있으나 코드가 복잡해.. [TIL] python csv writer StringIO, BytesIO for AWS boto3 문제상황 AWS boto3가 BytesIO로 저장 양식이 정해졌을 때를 상정해서, python의 csv를 import하여 csv 파일을 만들 때 BytesIO를 이용하여 바로 csv.writer를 생성하면 byte 데이터를 넣어줘도 에러가 난다. data = ["a", "b"] writer = csv.writer(io.BytesIO()) b_data = [str(ch).encode() for ch in data] writer.writerow(b_data) 원인 AWS boto3는 BytesIO로 입력을 받는데 csv는 writer로 StringIO만 받기 때문이다. 해결책 converting 과정을 추가한다. data = ["a", "b"] str_buffer = io.StringIO() writer =.. [TIL] python @patch doesn't work, @patch 작동 안함. mock 현상 python에서 test를 하는데 @patch가 작동을 안했다. 아래 코드에서 make_something 함수는 테스트 대상이 아니라서 테스트 도중에 실행되지 않도록 @patch를 적용했는데 정상 작동하지 않고 make_something 함수가 그대로 실행되었다. from a.util import make_something # 중략 @patch("a.util.make_something") def test_make_other_thing(self, mock_make_something): # ... mock_make_something.assert_not_called() # Error 원인 mock은 특정 object의 참조를 가짜 객체로 바꾼다. 그런데 최상단에서 import를 해버리면 실제 그 clas.. [링크] 파이썬 assert, raise 차이 https://ltlkodae.tistory.com/17 파이썬 assert, raise 차이점 파이썬에서 예외를 발생시키는 방법은 assert, raise 두가지가 있다. 그동안 크게 고민없이 사용했는데, 정리가 필요한것 같아 포스팅을 작성한다. assert 아래처럼 사용법은 굉장히 간단하다. cond = F ltlkodae.tistory.com assert는 DEBUG=True 일때만 동작. 테스트나 디버깅 성격이 강하다 실제 서비스에서는 raise 사용이 권장 웹 스크래핑, 크롤링- 2. Selenium 나도 코딩님의 파이썬 웹 스크래핑 강의 정리 https://www.youtube.com/watch?v=yQ20jZwDjTE 1. Selenium 설치 웹 자동화 테스트 툴이다. pip install selenium 크롬 웹드라이버 설치 크롬을 자유롭게 제어할 수 있는 실행파일이다. chrome://version 접속 -> chromedriver에서 알맞은 버전 다운로드 후 설치 *M1 맥북에서 chromedriver 실행파일을 열 수 없을 때 터미널로 chromedriver가 있는 디렉토리로 이동하여 아래 명령어를 입력해주면 된다. xattr -d com.apple.quarantine {크롬 드라이버 파일명(chromedriver)} 이후 다시 실행해보면 잘 실행된다. 2. 기본 사용법 naver에 접속.. [링크] 파이썬 가상환경 venv, Pycharm 개념 파이썬 가상환경은 프로젝트별로 필요한 패키지들을 다르게 설치할 수 있는 모듈이다. A 프로젝트에서는 requests라는 라이브러리가 1.0 버전이 필요할 수 있고, B 프로젝트에서는 2.0 버전이 필요할 수 있다. 가상 환경을 달리하여 해당 프로젝트의 라이브러리들에 대한 의존성을 관리해준다. 설치, 실행 가상환경 생성 프로젝트의 디렉토리에서 아래 명령어를 입력한다. Mac에서는 python 대신 python3 입력. python -m venv .venv 프로젝트에 .venv 폴더가 만들어진다. 가상환경 활성화 활성화를 위해 아래 명령어를 입력한다. . .venv/bin/activate mac에서는 아래와 같이 입력 source {가상환경 이름}/bin/activate 그럼 터미널 창의 입력란 맨 앞.. 웹 스크래핑, 크롤링- 1. 기본 개념, BeautifulSoup 이미지, CSV 다운로드 나도 코딩님의 파이썬 웹 스크래핑 강의 정리 https://www.youtube.com/watch?v=yQ20jZwDjTE 1. 기초 지식 웹 스크래핑과 크롤링의 차이 웹 스크래핑: 웹페이지에서 내가 필요한 내용만 가져오는 것 웹 크롤링: 특정 웹사이트를 돌아다니며 모든 정보들을 수집하는것 XPath 특정 element의 긴 전체 경로(ex. /html/body/div/span/div...) 대신 표시하는 Unique하고 요약된 경로 크롬 브라우저의 개발자도구에서 특정 element를 우클릭/copy/Copy XPath로 XPath 값을 얻어낼 수 있다. lib. requests pip install requests raise_for_status(): 200대 응답이 아니면 에러를 출력하고 프로그램을 중.. [TIL] python locale, OS의 locale 1. 사용 목적 python locale 국제화를 위해 사용한다. 예를 들어 한국에서는 소수점을 .으로 표기하여 123.456 식으로 표현하지만, 유럽에서는 123,456 과 같이 소수점을 콤마로 표시할 수 있는데, 이런 변환을 하기 위해서 사용한다. OS locale 터미널에서 locale 명령어를 입력하면 사용 중인 OS의 locale 정보를 확인할 수 있다. 그리고 locale -a 를 입력하면 모든 지역 코드를 확인할 수 있다. 2. 기본 문법 https://docs.python.org/ko/3/library/locale.html 기본 문법은 위 파이썬 사이트에서 안내하고 있다. 파이썬 내장 패키지이므로 import locale로 불러올 수 있고, locale.setlocale(카테고리, 사용지역.. 이전 1 2 3 4 5 다음