본문 바로가기

Python47

Google gmail API 사용 방법 (3) - Sample code Gmail API 사용 방법에 대한 3번째 포스트입니다. 앞서 2개의 포스트에서는 1) Google API Console에서 프로젝트를 생성하고, Client ID와 sescret을 받는 과정과 2) 구글 인증 서버에 계정 로그인을 통해서 API scope에 대한 명시적 동의를 받아 서버 인증용 access token을 받는 과정을 설명하였다. 본 게시글은 access token을 사용해서 실제 Google REST API에 호출하는 방법과 샘플 코드를 제공한다. [모바일/REST API] - Google Gmail API 사용 방법 (1) [모바일/REST API] - Google Gmail API 사용 방법 (2) Gmail API 사용: curl 명령어 확인하기 구글 API 사용하기 위해서는 API.. 2022. 1. 9.
Selenium 4.0 개선 사항 정리 - WebDriver 자동 로딩 가능 이전 포스팅에서 설명한 Web Crawling 방법에서 사용했던 Selenium이 3.0 버전에서 4.0으로 업그레이드 되었습니다. Selenium 3.0 버전 대비 4.0에서 가장 큰 개선 사항은 OS 별(Windows, Unbuntu, MacOS), Broswer 버전을 자동 감지하여 Web Driver 설치를 자동으로 할 수 있습니다. 이전 버전에서는 Chrome Driver를 버전별로 지정해서 수동으로 설치했었습니다. 만일 Chrome Version이 업데이트되는 경우 Web Driver도 같이 변경해야 하지만, Selenium 4.0부터는 OS와 Web Broswer에 맞는 Web Driver를 자동으로 다운로드하고 로딩이 가능합니다. Python Selenium과 BeautifulSoup을 활.. 2021. 12. 26.
Python 자동 테스트를 위한 Pytest 사용법과 예제 Python에서 Unittest의 가장 많이 사용하는 모듈은 Pytest와 Unittest입니다. unittest는 python 기본 모듈로 설치되고 JUnit와 같은 형식으로 테스트 코드를 간단하게 작성할 수 있고, Pytest는 unittest를 포함하여 다양한 형태의 texture 함수를 지원하고, 매우 다양한 옵션을 지원합니다. 또는 Pytest unittest 뿐 아니라 JUnit 등 다양한 테스트 framework을 호출할 수 있습니다. Test case를 쉽게 작성하고자 하는 경우에는 unittest를 사용하고, 고도화된 Test를 만들고자 하는 경우 pytest를 추천드립니다. Pytest 설치 Python unnittest는 기본 모듈로 별도 설치가 필요 없지만, pytest는 pip를 .. 2021. 12. 12.
Python 단위 테스트(Unit Test)를 위한 unittest 사용법과 예제 Python에서 단위 테스트를 unittest 사용법을 설명합니다. unittest는 Python 기본 Lib로 별도의 모듈을 설치할 필요가 없고, 사용법은 Java의 JUnit과 유사하여 쉽게 사용할 수 있습니다. Python unittest는 테스트 자동화, 자동화를 위한 설정, 종료, 각 테스트 case 실행하고 실행 결과를 report 할 수 있도록 구성되어 있습니다. unittest는 unittest.TestCase 의 함수를 상속받아 객체 지향적인 방법으로 각각의 함수를 지원합니다. Test Fixture: Test를 수행할 때 사전에 필요한 준비와 그와 관련된 동작을 실행합니다. 예를 들어 로그인이 필요한 기능에 대한 로그인을 테스트 전에 사전에 실행하거나, 필요한 데이터를 가져오기, 폴더 .. 2021. 12. 11.
Python Decorator를 이용한 함수 실행 시간 측정 방법 (Sample code) Python 함수의 실행 결과를 측정이 필요한 경우가 있습니다. 일반적으로 linux에서 time 명령어를 사용할 수 있고, Python code 자체에서는 @함수명으로 표시되는 decorator를 사용할 수 있습니다. Python 함수 실행 시간 측정 import time def elapsed(f): def wrap(*args): start_r = time.perf_counter() start_p = time.process_time() # 함수 실행 ret = f(*args) end_r = time.perf_counter() end_p = time.process_time() elapsed_r = end_r - start_r elapsed_p = end_p - start_p print(f'{f.__nam.. 2021. 12. 3.
Jupyter Notebook의 업그레이드: Jupyter Lab 설치 및 extension 사용법 Jupyter Lab은 Jupyter Notebook의 업그레이드 개발환경입니다. 기존 Jupyter Notebook은 Web 기반에서 Python 코드를 한 줄씩 실행하고 실행 결과를 확인할 수 있는 장점이 있었다면, Jupyter Lab은 기존 Jupyter Notebook을 포함하여 CSV/TSV 파 일을 오픈하여 편집할 수고, Mark Down 파일, Terminal 기능, Editor Theme 설정 기능, 다양한 Plug in (extension) 기능을 지원합니다. 특히, extension은 Visual Code의 extension처럼 개발에 필요한 다양한 기능을 사용할 수 있습니다. 예를 Git control, Graph (pilot) 기능, Json, Exel 편집 등 매우 편리한 기능을.. 2021. 9. 16.
Python 여러 버전 설치 방법 (3.x and 3.y 동시 설치) 상용 우분투 서버에 파이썬 프로그램을 하나의 설치 파일로 만들어서 배포하는 작업을 진행 중에 있습니다. 최대한 많은 리눅스 서버와 호환성을 유지하기 위해서 가장 낮은 버전의 우분투와 glibc 버전의 환경에서 설치 파일을 만들어야 합니다. 현재 사용하고 있는 서버의 우분투 버전을 조사한 결과 14.04, 16.04, 18.04 버전을 사용하고 있으며, 가장 낮은 14.04 버전을 기준으로 실행 파일을 생성하기로 했습니다. 즉, 우분투 14.04 서버에서 빌드한 프로그램은 14.04 이후 버전 (16.04, 18.04, 20.04) 서버에서 구동을 시킬 수 있습니다. 우분투 14.04 버전을 확인한 결과 Python 2.7.6 버전과 3.4 버전이 설치되어 있고, 설치 파일 생성을 위한 pyinstalle.. 2021. 9. 12.
Python 가상환경(Virtual Environment) 만들기 위한 virtualenv 명령어 및 실행 예제 Python은 2.x 버전부터 3.10 버전까지 개발되어 있습니다. 2.x버전과 3.x 버전에는 문법에 있어 많은 변경이 있었고, Python 3.x 버전에서도 기본적은 문법은 동일하나 함수 paramter 등의 변화가 있었습니다. Python은 1~2년 주기로 Major 버전 업그레이드가 진행되기 때문에 프로젝트를 진행할 때에는 일반적으로 과거의 특정 버전을 기준으로 개발합니다. 각 Python 버전 간의 차이로 발생하는 종속성 문제점을 해결하기 위해서 "가상 환경 virtualenv"를 지원합니다. 가상 환경은 아래와 같은 경우에 유용하게 사용합니다. 개발 서버에서 설치된 python verion과 별도의 project를 진행 (e.g. 서버는 python 3.8, 프로젝트 버전은 v3.6인 경우) .. 2021. 8. 24.
Python Dash를 활용한 Web App 구현 및 시계열 데이터 Visualization (Sample code) Dash는 plotly.js, React, Flask로 data visualization framework이며, MIT 라이선스로 배포하는 오픈소스입니다. Dash로 활용해서 Data 분석 결과를 웹 서비스로 구현할 수 있습니다. 아래 포스팅에서 Plotly와 Dash를 활용해서 Web 기반으로 Data를 Visualization 하는 간단한 설명을 하였으며, 이번에는 Dash에 대한 기본적인 동작 설명과 DataFrame의 시계열 데이터를 웹으로 구현하는 예제를 추가합니다. [SW 개발/Data 분석 (RDB, NoSQL, Dataframe)] - Python plotly와 dash를 이용한 Web 기반 data visualization (sample code) Flask Server와 다수의 Dash.. 2021. 8. 21.
Keras를 이용한 다중 클래스 분류: softmax regression (Sample code) 다중 분류(Multi-class classification) 문제는 다수의 독립 변수(X)와 다수의 종속 변수(Y)가 있다면 Y의 값이 1 or 0으로 구분되는 Binary classification 대비 2개 이상의 값을 가지는 가질 수 있는 분류 문제입니다. Keras에서 다중 분류 사용하기 위해서는 Softmax활성화 함수, One Shot encoding, 비용 함수 Categorical Cross-entropy를 사용해야 합니다. 활성화 함수: SoftMax Label Encoding과 One Shot Encoding 비용 함수: categorical_crossentropy SoftMax 활성화 함수 Sigmoid 활성화 함수가 Binary Classification에서 사용한다면, Softma.. 2021. 8. 15.
Python 2.x에서 3.x으로 코드 자동 변환: 2to3 와 __future__ 사용 Python 코드를 다루다 보면 기존 Python 2.x 에서 개발된 오픈 소스를 Python 3.x으로 migration 해야 하는 경우가 종종 있습니다. 이 경우 코드 한 줄씩 변경하는 것보다 일괄로 변경해주는 Tool을 활용하는 것이 편리합니다. Python에서는 2to3로 변화는 tool을 제공합니다. 이는 lib2to3 기반으로 사용하고 있고, Python3과 100% 호환성 있는 코드까지는 아니지만 많은 수 작업 부분을 줄일 수는 방법을 설명합니다. Python 2to3 설명서: Python 공식 문서 사용 결과: Python 3.x 버전과 100% 호환성이 있는 코드는 아니지만 수작업 부분을 많이 감소시킴 설치 2to3는 Python 3 설치 시 같이 설치됩니다. (참고로, 우분투에서 apt.. 2021. 8. 15.
Python Keras를 이용한 로직스틱 회귀 분석(logistics regression) 예제- Wine Quality 분석(Sample code) 아래 이전 포스팅에서 Logistics regression에 대한 개념과 Keras 예제를 확인하였습니다. 본 포스팅에서 다수의 독립 변수(X)와 단일의 종속 변수(Y)인 Wine Quality 예제를 설명하도록 하겠습니다. [SW 개발/Data 분석 (RDB, NoSQL, Dataframe)] - Python Keras를 이용한 Logistic Regression 방법 및 개념 설명 (Sample code) Wine Quality 예제의 데이터 구성 Wine Quality 예제의 출처는 링크입니다. Red Wine과 White Wine의 12개 항목(산도, 등급, 맛)을 49K 샘플을 측정한 데이터입니다. 원본 파일에서 Red Wine과 White Wine 데이터를 하나의 파일로 합치고, 마지막 col.. 2021. 8. 6.
Python Keras를 이용한 Logistic Regression 방법 및 개념 설명 (Sample code) Logistic regression은 독립 변수의 선형 결합을 이용하여 사건의 발생 가능성을 예측하는데 사용되는 통계 기법입니다. 일반적인 선형회귀와 차이점은 종속 변수가 특정 분류로 나뉘는 특징이 있고, 결과가 1 또는 0으로 제한되는 이전 분류 (Binary Classification)입니다. Logistic regression에서의 각 독립 변수의 계수를 log-odds를 구한된 Sigmoid함수를 적용하여 실제 데이터가 해당 class에서 속할 확률을 계산합니다. 즉, Logistics regression에서의 가설(Hypothesis)은 Sigmoid function입니다. Loss(손실, 오차)는 예측 모델이 실제의 값을 얼마나 잘 표현하는지 나타내는 함수로 binary_crossentropy.. 2021. 8. 1.
Python Keras를 이용한 다중회귀(Multiple regression) 예측 (Sample code) 앞서 설명한 선형 회귀(Linear Regression)는 다중회귀(Multiple Regression) 분석은 독립 변수가 2개 이상의 회귀 모형을 분석 대상으로 삼고 있습니다. 이를 그림으로 표현하면 아래와 같습니다. Y= aX+b 모델에서 독립변수 X의 개수가 증가하고, 이를 Table로 표현하면 독립 변수의 Column의 개수가 증가하는 것입니다. Keras에서 선형회귀 분석에 대한 설명은 아래 포스팅을 확인 부탁드립니다. 본 포스팅에서는 선형 회귀에서 다중회귀에서 변경해야 하는 부분을 설명하고자 합니다. [SW 개발/Data 분석 (RDB, NoSQL, Dataframe)] - Python Keras를 이용한 Linear regression 예측 (Sample code) 다중회귀에서 변경해야 하.. 2021. 8. 1.
Python Dataframe Visualization: matplotlib로 chart 그리기 (sample code) Python visualization lib 중 가장 많이 사용하고 유명한 패키지는 Matplotlib입니다. Matplotlib는 numpy, pandas dataframe과 호환 잘되며 다양한 종류의 데이터와 그래프를 쉽게 구현할 수 있습니다. Matplotlib를 기반으로 보다 쉽게 구현할 수 있거나, 다양한 옵션을 제공하는 seaborn과 같은 lib도 매우 유용하게 사용할 수 있습니다. matplotlib Sample code 얻는 법 Matplotlib Gallery 사이트에서 matplotlib로 구현하고자 하는 Graph 먼저 선택합니다. Bar, Line, Stacked plot, Scatter 2D/3D, 등 많은 종류의 그래프를 지원하고 있습니다. 그중에서 구현하고자 하는 그래프를 선.. 2021. 7. 28.
Random Number를 가지는 Pandas Dataframe 생성 (좋은 code와 나쁜 code 비교) Pandas Dataframe은 보통 df.read_csv() 함수로 CSV 파일을 읽어 dataframe을 생성하지만, 성능 테스트 목적으로 random number를 가지는 dataframe 생성해야 하는 경우가 아래와 같이 가끔 있습니다. [SW 개발/Data 분석 (RDB, NoSQL, Dataframe)] - Pandas Dataframe 처리 속도 향상을 위한 병렬 처리 방법: Swifter 모듈 (사용법 쉬움)) Random number 생성은 Numpy random 또는 Built 모듈인 random 모듈 모두 사용 가능합니다. 구현 방법에 따라서 Dataframe의 생성 속도 차이는 상당히 발생합니다. 테스트 결과 10,000,000개 사이즈의 실행 속도를 비교하는 성능이 빠른 code는.. 2021. 7. 27.
Pandas Dataframe Groupby() 함수로 그룹별 연산하기: Split, Apply, Combine Pandas DataFrame에서 가장 많이 사용하는 Groupy 사용법을 설명하도록 하겠습니다. SQL 개발 경험을 가지고 있는 분이라면 GROUPBY를 높은 빈도로 사용했을 것입니다. Groupby 동작 방식은 Pandas 공식 사이트(링크)에 자세히 설명되어 있습니다. Groupby()는 ① 전체 데이터를 그룹별로 분할(split)하고, ② mean(), sum(), count()와 같은 Aggregate function을 사용하여 연산(apply)하고, 연산 결과를 ③ 다시 합치는(combine) 과정을 거치게 됩니다. Splitting the data into groups based on some criteria. Applying a function to each group independent.. 2021. 7. 25.
Python Pandas로 Excel과 CSV 파일 입출력 방법 Pandas에서는 다양한 파일 입력을 지원하고 있습니다. 현재 Pandas는 버전 V1.3.0이며, 현 버전 기준으로 Pickling, Flat file, Clipboard, Excel, JSON, Html, Laxtex, HDF, SAS, SPASS, SQL, Google BigQuery, STATA의 파일 포맷을 지원하고 있으며, 이 중에서 일반적으로 가장 많이 사용하고 있는 Excel과 CSV 파일을 읽고 쓰는 방법을 설명합니다. Pandas로 Excel 파일 읽기: Local File과 Http URL도 지원함 Pandas에서 Excel 파일을 읽기 위해서는 Excel Reader를 설치해야 합니다. Pandas에서 기본적으로 xlrd를 사용하고 있으며 xls포맷만 지원합니다. 만일 xlsx인 엑.. 2021. 7. 21.
Python KoNLPy와 WordCloud를 활용하여 WordCloud 생성하기 (Sample code 포함) WordCloud는 텍스트 기반의 문서에서 키워드, 단어, 자주 사용하는 단어를 추출하여 핵심 내용을 직관적으로 파악할 수 있도록 그래픽으로 가시화하는 방법입니다. Python으로 WordCloud를 생성하기 위해서는 아래와 같은 3가지 단계가 필요합니다. KoNLPy와 nltk lib를 사용해서 문서에서 각각의 형태소(≒ 주로 명사인 단어)로 추출 Collection Counter() 모듈을 사용해서 명사가 언급된 횟수를 계산 WordCloud Lib를 사용하여 형태소(단어) 빈도에 따른 WordCloud 이미지 생성 및 저장 한국어 형태소 분석 KoNLPy (Korean NLP in Python) 한국어 자연어 처리 Python 오픈소스인 KoNLPy를 사용합니다. KoNLPy의 소스 코드와 홈 페이.. 2021. 7. 19.
Python: JSON 개념과 json 모듈 사용법 Python JSON 사용 방법에 대해서 정리하고자 합니다. JSON은 Key-value를 양식을 가지는 텍스트 파일로 인터넷 상의 서버-클라이언트의 데이터 교환에 많이 사용되고 있습니다. 최근에서는 Web 서버와 client간의 통신 및 프로그램과 프로그램 사이의 데이터 표현 및 교환하는데 사용되는 사실 상의 표준입니다. Python에서는 json 모듈을 지원하고 있으면 인코딩/디코딩을 지원하고 있고, JSON 데이터와 Python 데이터는 1:1로 맵핑되어 사용하기 쉽니다. Python JSON 공식 문서는 여기를 참고해주세요. 1. JSON 이란 JSON 에 설명 및 예제를 참고해주세요. (출처: 위키백과) JSON(JavaScript Object Notation)은 속성-값 쌍(attribute–.. 2021. 7. 16.
Python으로 개행 문자(\n)가 포함된 JSON 읽기: JSONDecodeError 수정하기 Python json 모듈에서 개행 문자 "\r\n" 또는 " \n" 포함된 string을 json.loads() 함수로 dictionary로 객체로 변환할 때 발생하는 에러입니다. 개행 문자가 포함된 경우 json.loads() 함수 호출 시 "JSONDecodeError():Invalid control character" 에러가 발생하며 수정 방법은 ① json.loads() 호출 시 strict=True 값으로 전달하는 방법과 ② 원본 스트링에서 문구를 치환하는 방법 2가지가 있습니다. 에러 발생 예제 import json json_str = """{ "이름": "홍길동", "나이": 25, "문장": "첫 줄 문장 \n 두 번째 문장" }""" jdata_obj = json.loads(json_s.. 2021. 7. 14.
Apple App Store 사용자 댓글(리뷰) 데이터 수집하기 (Sample code 포함) 이전 포스팅 (https://kibua20.tistory.com/192)에서는 Python Selenium과 BeatifulSoup을 사용해서 Google Play Store에서 App에 대한 사용자, 작성일, 좋아요, 리뷰 내용의 데이터를 크롤링하는 방법에 대해서 설명했습니다. Apple App Store에서는 사용자 리뷰 정보를 웹 페이지와 RSS Feed로 제공하고 있으며, 이를 수집하는 방법을 설명합니다. Apple App 앱 스트에서 사용자 리뷰는 아래 그림과 같이 사용자 리뷰 내용을 제공하고 있습니다. 아래 사이트를 Selenium을 사용해서 크롤링도 가능하지만, RSS Feed가 보다 정형적인 데이터를 제공하고 구현이 쉽게 때문에 RSS Feed를 사용합니다. 예를 들어 Youtube의 RS.. 2021. 7. 14.
우분투 20.04에서 Jupyter Notebook 사용법: Web browser에서 Python 개발 환경 구축 Jupypter Notebook은 https://jupyter.org/에서 개발한 Web 기반의 interface로 Browser상에서 Python 코드를 한 줄씩 실행하여 출력 결과를 확인할 수 있는 개발환경을 제공하는 오픈 소스의 개발 툴입니다. Local PC에서 Python 개발뿐 아니라, 브라우저 기반의 Interface를 사용하는 특성 때문에 때문에 AWS과 Goolge Cloud에서 Jupyter Notebook 형태로 Python code를 샘플 코드를 배포하기도 합니다. 또한 원격 서버에 Jupyter Notebook을 설치하고 Browser에서 원격으로 Python 코드를 개발할 수 있습니다. 예를 들어 AWS EC2에서 Jupyter를 설치하여 원격 소스 작업을 할 수 있습니다. Ju.. 2021. 5. 16.
Python으로 압축 파일 다루기: Zipfile 과 shutil.make_archive() Python에서 압축 파일은 내장 모듈인 Zipfile 모듈과 shutil.make_archive()와 shutil.unpack_archive()을 이용하여 다룰 수 있습니다. Zipfile 모듈은 python 기본 내장 모듈로, Zip 파일을 압축하고, 읽고, 저장, 리스트를 얻어올 수 있습니다. 압축 알고리즘은 Deflate, BZip, LZMA 알고리즘을 지원합니다. 또한 4GB 이상의 Zip 파일인 Zip64도 처리할 수 있습니다. Zipfile 모듈의 문서는 링크를 참고해주세요. shutil.make_archive() 함수와 shutil.unpack_archive()은 zip, tar, gztar, bztar를 지원합니다. 코드 한줄로 폴더를 압축할 수 있습니다. Zipfile 모듈 - zip .. 2021. 1. 14.
Python 음수 인덱스: line.split('+')[-1] 또는 line.split('/')[-1] 의미 C 언어인 경우 array에 '음수'인덱스는 허용하지 않지만, Python인 경우 음수 인덱스를 허용하고 있습니다. list 나 array와 같은 sqeunce 객체의 인덱스를 음수로 지정하면 마지막 항목부터 접근하게 됩니다. 음수 인덱스는 "마지막 항목"부터 접근하면 다양한 경우에 유용하게 사용할 수 있습니다. 예제 #1 a = (0,1,2,3,4,5,6) a[-1]=6 a[-2]=5 a[-3]=4 a[-4]=3 예제 #2 line = http://abc.example.com/def/ghi line.split('/') → ['abc.example.com', 'def', 'ghi'] line.split('/')[-1] → 'ghi' 예제 #3 line = 'a+b+c+d' line.split('+') →.. 2021. 1. 8.
파이썬으로 Apk Download 자동화: Selenium기반의 Apk 크롤러 Android를 개발하다 보면 목적에 따라서 APK를 다운로드해야 하는 경우가 있습니다. Google Play Store에서는 APK 자체를 다운로드할 수 있는 방법은 없고, APK Mirror 사이트를 통해서 다운로드할 수 있습니다. 일반 사용자인 경우에는 Android로 기반의 내비게이션에 APK를 다운로드하고 SD 카드로 복사하여 설치 가능합니다. 본 포스팅에서는 다운로드하고자 하는 APK 의 package name의 list를 기반으로 Python의 selenium과 chrome webdriver를 사용해서 '자동'으로 apk를 다운로드합니다. 이 방법은 APK 뿐 만 아니라 다른 Web site에서 특정 파일을 다운로드하는데 활용될 수 있습니다. 참고로, 다운로드한 apk를 상업적인 목적이나 추.. 2021. 1. 8.
Python: 날짜와 시간 처리 함수(현재 날짜, 어제 날짜, UTC 시간) Python에서 날짜와 시간을 처리하는 datetime 모듈을 제공합니다. 현재 날짜와 시간 구하기 import datetime today =datetime.datetime.now() → 2020-11-29 21:21:22.933386 d1 = today.strftime("%Y%m%d") → 20201129 어제 날짜와 시간 import datetime today =datetime.datetime.now() → 2020-11-29 21:21:22.933386 yesterday = today - datetime.timedelta(1) → 2020-11-28 21:21:22.933386 d2 = yesterday.strftime("%Y%m%d") → 20201129 timedelta 함수 (출처: Ptyho.. 2020. 11. 30.
Python: xmltodict를 활용하여 XML를 JSON으로 변환하는 방법 일반적으로 REST API를 사용할 때 JSON을 많이 사용하고 있지만 일부 사이트는 XML 포맷을 사용해서 결과를 내려주고 있습니다. 본 포스팅은 XML을 읽어 JSON형태로 변환하는 방법을 설명합니다. Python에서는 XML 처리를 위해서 Elementary Tree를 지원하고 있습니다. 이는 tree구조로 데이터를 읽어 Dictionary 데이터 타입 대비해서 코드의 양이 다소 증가하게 됩니다. 기존 포스팅에서 설명을 했기 때문에 xmltodict 모듈 사용하도록 하겠습니다. xmltodict모듈은 아래 github 사이트와 참조 링크를 확인해주세요. Python xmltodict 모듈 사용이 필요한 경우: XML 을 JSON으로 변환할 때 사용 REST API 중 일부는 XML로 결과를 내려주는.. 2020. 11. 26.
파이썬 Selenium을 활용한 네이버 서치어드바이저 URL 입력 '자동화' 티스토리 블로그는 네이버에서 검색 노출 빈도가 구글이나 다음 대비 상대적으로 떨어지는 것이 사실인 것 같습니다. 네이버 검색 엔진에 노출도를 향상시키기 위해서 티스토리 블로그를 네이버 서치 어드바이저에 등록을 하고 계실 것입니다. 네이버 서치 어드바이저에서 블로그 사이트를 등록하고 사이트 맵을 제출 하면 네이버 검색 로봇이 블로그에 방문하여 주기적으로 웹 페이지를 수집하지만, 간혹 수동으로 네이버 서치 어드바이저에 웹 페이지 수집을 요청하는 경우 URL을 '하나씩' 입력해야 해야 합니다. 실제 네이버에서 블로그를 검색해보면 오래된 게시글은 네이버 검색에서 제외되는 경우가 있다고 합니다. 실제 제 블로그에도 수입 현황을 보면 이유는 알 수 없지만 색인 생성수가 줄어드는 현상이 있습니다. 따라서 네이버 검색.. 2020. 11. 1.
Python 명령어 처리: Argparse 모듈 (ArgumentParser 사용 예제) Terminal에서 Python script을 터미널에서 실행할 때 명령어 옵션에 대한 parameter를 python으로 전달할 때 사용하는 방법입니다. 제가 작성했던 기존 code는 sys.argv 값을 확인해서 터미널 명령어 인자별로 값을 얻어서 python 변수에 할당하는 방법을 사용하고 있었습니다. 이 경우 명령어 parameter가 추가 또는 삭제하는 경우 if 문 하나씩 증가하는 불편함이 있습니다. Python에서는 Command line에서 argument처리를 위한 argparse 모듈을 지원합니다. ArgumentParser와 add_argument 함수를 조합하면 보다 편리한 명령어 Parser를 만들 수 있습니다. 아래 Usage: ./argv_test.py [parm] [param.. 2020. 9. 1.