python 284

[python] 여러 값을 한 줄로 입력 받기

아래 몇 가지 함수를 이용하면 한 줄로 입력받은 각각의 값을 변수에 저장할 수 있다. 먼저 필요한 함수를 먼저 살펴본다. input() 사용자가 입력한 값을 문자열로 취급하여 변수에 저장할 수 있다. 코드 a = input() # 프롬프트에 메세지 출력 b = input("enter text: ") split() 매개변수로 전달받은 문자열을 기준으로 문자열을 나누어 리스트로 반환한다. 전달받은 문자 값이 없는 경우 스페이스, 탭, 엔터 등의 공백을 기준으로 문자열을 나눈다. map(function, interable) 내장 함수로 입력받은 반복 가능한 자료형에 대해 입력받은 함수를 수행하여 반환한다. 보통 여러 개의 데이터를 한 번에 다른 형태로 변환하기 위해 사용한다. map 객체를 반환하기 때문에 객..

Python 2021.10.09

[자료 구조] 동명이인 찾기 / 딕셔너리

딕셔너리(dictionary, 사전) 정보를 찾는 기준이 되는 키(key)와 키에 연결된 값(value)의 대응 관계를 저장하는 자료 구조 key-value 형태의 자료구조를 해시 테이블(Hash Table)이라고 하며, 프로그래밍 언어마다 다르게 불릴 수 있다. C++에서는 unordered_map, Java에선 haspmap이라고 부른다. 코드 # 빈 딕셔너리 선언 d = {} d = dict() # 선언과 동시에 초기화 d = { KEY1: VALUE1, # 키와 값은 콜론으로 구분 KEY2: VALUE2, # 키와 키는 쉼표로 구분 KEY3: VALUE3, KEY4: VALUE4 } # d 자료 개수 확인 len(d) # 값 찾기 d[KEY] # 값 추가. 키 중복 미허용. 기존 값이 있는 경우 ..

[Selenium] Element 텍스트 읽기

selenium에서 특정 Element의 텍스트 값을 읽는 방법을 적어둔다. 크롬 드라이버 기준이다. text 기본적으로 특정 Element의 텍스트 값을 읽을 때는 text 함수를 호출한다. text 함수는 엘리먼트의 text property를 읽는다. text = driver.find_element_by_xpath('').text ## 구현부 def text(self): """The text of the element.""" return self._execute(Command.GET_ELEMENT_TEXT)['value'] 하지만 엘리먼트 내에 문자가 존재함에도 불구하고 빈 문자열을 반환하는 경우도 존재한다. 요소에 text property가 없어서 다른 속성에 값이 설정되어 있기 때문인 듯하다. g..

Python 2021.09.15

virtualenv - Python 버전 지정

virtualenv를 새로 생성할 때 아무 옵션을 지정하지 않으면, PATH 등으로 설정된 기본 파이썬 버전으로 가상 환경이 생성된다. 하지만 종종 기본값이 아니라 다른 버전의 파이썬을 사용해야 할 때가 있다. 이런 경우에는 -p 옵션을 이용해 사용할 파이썬을 지정할 수 있다. 방법 virtualenv -p # -p : --python. 파이썬 버전 지정 # 예시 virtualenv venv -p python3.8 + global로 설치된 패키지 접근 필요시 virtaulenv venv--system-site-packages 추가로 보통 virtualenv 환경은 홈 디렉터리에서 관리하는 게 편하다고 한다. ~/.venv/

Python 2021.09.10

[Selenium] 다음 로그인하기

브라우저 제어 도구인 Selenium을 이용해 다음(www.daum.net)에 로그인하는 코드를 작성하려고 한다. 설치 과정은 2021.07.14 - [CentOS] Chrome 및 Selenium 설치 을 참고한다. 다음 로그인 과정 프로그램을 작성하기 전에 먼저 다음 로그인을 하기 위해서는 어떤 과정이 필요한지 확인해본다. 1. 다음(www.daum.net) 홈페이지 접속 2. 로그인 방식 선택 이 글에서는 '카카오 계정으로 로그인' 하려고 한다. 3. 계정 정보 입력 4. 로그인 버튼 클릭 위 과정에 따라 코드를 작성하도록 한다. 코드 작성 1. 라이브러리 import 및 크롬 드라이버 선언 from selenium import webdriver driver_path = 'D:\\projects\\..

Python 2021.09.08

[Python] setup.py install - 수동 설치

보통 python 라이브러리는 package manager인 pip를 이용하여 관리하지만, pip로 관리되지 않고 깃허브 등으로 배포되거나, dev 버전으로 이용하고자 하는 라이브러리는 수동으로 설치해야 한다. 아마 패키지 내에 setup.py라는 파일이 존재하는 것을 발견할 수 있을 것이다. 설치 방법 패키지를 다운로드한 최상위 디렉터리로 이동하여 install 명령을 실행한다. cd python setup.py install # 설치할 파이썬 환경 지정 예시 python3.5 setup.py install /YOUR/PYTHON/PATH setup.py install 예시) python-gitlab 패키지 수동 설치 git clone https://github.com/python-gitlab/pyth..

Python 2021.09.06

[CentOS] Chrome 및 Selenium 설치

Selenium 웹 브라우저의 자동화를 가능하게 하는 도구와 라이브러리를 제공하는 프로젝트 Java, Python, C#, Ruby, JavaScript, Kotlin 등의 언어를 지원한다. 리눅스 OS에서 웹 크롤링 환경을 구성하기 위해 웹 브라우저인 크롬과 크롬 드라이버, 그리고 Selenium을 설치하려고 한다. 사용할 OS는 AWS Linux2(CentOS7)이고, Python3이 이미 설치되어 있으므로 Python으로 테스트까지 해보려고 한다. 설치 과정에서는 Sudo 권한이 필요하다. 1. 크롬 설치 공식 Google 저장소를 추가하는 대신 rpm 파일을 다운로드하여서 설치할 것이다. 어차피 설치 과정에서 저장소가 추가되기 때문이다. 아래와 같이 wget 명령으로 최신 크롬 패키지를 다운로드하..

Linux 2021.07.14

activate 없이 virtualenv 환경 이용하기

기본적으로 virtualenv 내 python을 사용해 python 코드를 실행시키기 위해서는 아래의 명령어로 virtualenv를 activate 해야 한다. source /bin/activate 그렇다면 virtualenv 환경은 activate를 해야만 사용할 수 있을까? 결론만 말하자면, virtualenv 내 python의 실행 경로를 직접 지정하면 activate 하지 않아도 virtualenv로 구성한 python과 모듈을 동작시킬 수 있다. 예시 예시로 패키지 충돌을 피하기 위해서 test_env라는 이름의 virtualenv 환경에 python-gitlab이라는 모듈을 설치했다고 가정해보자. 그리고 각 환경에서 python-gitlab 모듈을 import 해보았다. python-gitla..

Python 2021.06.26

[CentOS 7] virtualenv 설치 및 사용

virtualenv 격리된 가상 python 환경을 만들기 위한 도구 가상 python 환경이란 시스템 상에 설치되어 있는 python 환경은 그대로 두고, 작은 python을 새로 설치하여 필요한 python 모듈만 운영하는 환경이다. 가상 머신과 비슷하게 생각하면 된다. 하나의 모듈의 다른 버전이 필요하거나 서로 다른 모듈끼리의 충돌이 발생할 경우, 설치할 모듈로 인해 기존 서비스에 영향이 가지 않도록 하기 위해 사용한다. 설치 방법 python3와 pip3가 필요하다. 설치되어 있지 않으면 아래 명령어로 설치하도록 한다. yum install python3 yum install python3-pip 설치엔 root 권한이 필요하다. 설치를 해봤다면 잘 설치가 되었는지 버전을 확인해본다. python..

Python 2021.06.25

Python 첨부 파일 메일 전송

2021.06.20 - Python 텍스트 메일 전송 지난 글에 이어 이 글에서는 첨부파일을 포함한 메일을 전송할 수 있는 코드를 다룬다. 마찬가지로 코드 전체를 복사해서 사용한다면, MAIN 아래의 email_sender부터 attachment_filepath까지의 값을 잘 넣어주면 된다. 전체 코드 import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email import encoders import os import time class MailSender: def __init__(self, email_..

Python 2021.06.21