본문 바로가기
728x90
반응형

Python/Python Advanced11

11. Python - Thread를 사용한 여러 기능 동시 실행(1) 최근 필자는 완성하지 못한 개인 프로젝트를 싸그리 중단하고 from the scratch로 다시 하나씩 코드를 작성해나가는 중이다(Linux 제어 코드부터 진행중이다. PEP8 Convention도 맞추고, 몇 개월 지나면 알아볼 수도 없는 코드도 줄일 겸). 필자가 진행 중인 프로젝트 중 하나를 잠깐 소개하자면, Linux로 인가받지 않은 사용자가 로그인을 시도하는 경우 해당 침입자의 IP를 firewalld에 Drop 정책으로 등록하는 과정을 실시간 + 자동으로 진행하도록 만드는 프로그램의 제작이다(필자가 만들고자하는 프로그램과 유사한 프로그램이 오픈 소스로 있었는데 이름을 잊어버렸다...). Linux에 로그인을 시도하는 사용자의 정보는 보통 /var/log/secure 파일에 저장된다. 위의 스크.. 2024. 3. 22.
10. Python - Lamdba의 활용 되도 않는 망상에 빠져 Python으로 "이런 기능 한 번 만들어봐야지" 하면서 지낸 것이 벌써 5년이 되었다. 물론 필자 나름대로 아직까지 잘 쓰고 있는 프로그램도 있긴 하지만 99%가 업무로 바빠서(핑계가 아니다. 진짜...) 엎어진 것들이 많다. 그런데, 최근 어떠한 이유로 갑자기 옛 코드들을 들여다보다가, 공통적으로 개선이 필요한 사항이 필자의 눈에 많이 띄인다. 오늘 다루어 볼 내용은 지금까지 필자의 능력 부족으로 잘 사용하지 못했던 Lambda 함수다. 1. Lambda 식 아래와 같은 상황을 가정해보자. List형 데이터 변수가 있고, 여기에는 5명의 학생의 '국어', '영어', '수학', '프로그래밍' 점수가 Tuple 형태로 저장되어 있다고 가정해보자. 아래와 같은 형태로 나타날 것이다... 2024. 2. 19.
9. Python - 자꾸 까먹어서 기록하는 Json, Yaml 파일 읽기/쓰기 Python이 주력 언어다 보니, 업무 상으로도 왠만한 프로그램은 Python으로 개발하고 있는 중이다. 그러다보니, 필자가 자주 사용하는 코드는 개인 라이브러리 형태로 만들어 사용하고 있는데, 이 업계가 항상 그러하듯이 개발은 갑작스럽게, 급하게 진행되어야 하다보니 라이브러리 상에서도 개판 5분전인 코드들이 많이 나온다. 그래서 요즘 아예 필자의 개인 프로젝트용으로 라이브러리를 다시 만들고 있는 상태인데, 맨날 라이브러리를 통해 설정 파일들을 불러오다보니, 설정 파일의 주 단골 손님인 Json과 Yaml을 읽고 불러들이는 방법을 완전히 잊은 상태가 되었다... 이번 포스팅에서는 Json, Yaml의 읽기와 쓰기에 대해 간략히 정리하려 한다. 1. Json, Yaml 파일 RW 패키지 Json과 Yaml.. 2023. 8. 11.
8. Python - msvcrt 모듈로 키보드 입력 및 화면 출력 조정 필자가 최근 Python으로 필자 회사에서 사용중인 솔루션의 분석 결과를 별도로 추출할 수 있는 프로그램을 개발하고 있다. 사실 필자의 업무 영역에서 많이 벗어난 부분이지만, 시간은 부족하고 일은 많아지니 놀고 있는(?) 컴퓨터에게 필자 일을 조금 떠넘겨보려는 의도에서 만들고 있는 중이다. 지금 만드는 프로그램은 아무래도 고객사 내에서 사용되어야 하는 파일이기 때문에, 몇 가지 필수 조건이 존재한다. 첫 째로, window에서 돌아가야 하는 파일이어야 하며, 둘째로 python의 기본 모듈만 사용해야하며, 마지막으로 인가된 사용자만 이 프로그램을 사용하여 분석 결과를 확인할 수 있도록 하는 것이다. 너무도 당연한 이야기인데, 고객사 환경에는 python이 설치되어 있지 않을 확률이 높고, 설령 pytho.. 2021. 8. 7.
7. Python - timeit모듈, timeit()매서드로 코드 실행시간 계산하기 Python으로 코드를 작성하다보면, 내가 작성한 코드가 얼마나 빠르게 동작하는지 궁금할 때가 있다. 코드의 실행시간이 짧다는 것은, 그만큼 코드가 효율적으로 작성되어 있다는 것이기 때문이다. 프로그램을 막 시작한 초보자라면, 특히 프로그램의 효율적인 동작에 관심이 많은 경우라면, 자신이 작성한 프로그램에 대해 수행 시간을 측정해보려고 시도해보았을 것이다. 하나 예를 들어보자. 1부터 10000000까지의 합을 구하는 코드를 작성한다고 해보자. 이를 구하기 위해 사용할 수 있는 Python 문법으로는 크게 for나 while 루프문이 있다. 과연 어떤 방법이 더 빠를까? 이를 확인하기 위해, 프로그램을 막 배우기 시작하신 분들은 대다수가 아래와 같은 코드로 작성할 것이라 생각한다. 각 함수 내에 time.. 2021. 5. 12.
6. Python - os 모듈: chdir(), listdir(), getcwd() 함수 간만의 Python 포스팅이다. 지난 포스팅에서는 파이썬의 기본 모듈인 OS 모듈에서 사용할 수 있는 system() 함수에 대해 알아보았다. system() 함수는 운영체제의 명령어를 Python에서 바로 사용할 수 있도록 도와주는 함수임을 확인해보았다. 그런데, system() 함수를 import 하여 이런 저런 명령어의 결과를 확인해보다보면, cd 명령어를 사용했음에도 불구하고, 다른 폴더의 파일을 인식하지 못하거나, 현재 작업 폴더 경로나 폴더 내 파일 목록을 변수에 저장할 수 없음을 발견하신 분들도 있을 것이다. 아래의 예시를 보자. 분명 system 함수를 사용하여 cd로 디렉토리 이동 명령어를 수행했음에도 불구하고, 현재 작업중인 디렉토리 경로는 변하지 않고 "blitz" 폴더에 머물러있는 .. 2020. 8. 17.
5. Python - OS 모듈, system() 함수 프로그래밍을 하다보면, 프로그래밍 동작에 필요한 설정 파일과 폴더를 만들어 동작시키는 과정에 이르는 때가 온다. 그리고, 프로그래밍의 동작에 따라, 특정 설정 파일이나 폴더가 이 생성되거나, 다른 경로로 이동하거나, 삭제되는 상황도 분명 존재할 것이다. 보통 이러한 파일 생성, 이동, 삭제 작업은 윈도우에서 제공하는 CMD(Command) 창의 명령어로 해결이 가능하다. 폴더의 생성으로 몇가지 예시를 들자면... 현재 폴더에 존재하는 파일과 폴더 목록을 출력함 현재의 경로에서 새 폴더를 생성 현재의 경로에 존재하는 폴더 삭제 ...와 같은 명령어들이 있다. 그렇다면 Python으로 코딩을 하다가, 어떤 파일을 다른 곳으로 옮기거나, .. 2020. 7. 1.
4. Python - time 모듈 이번 포스팅에서는 Python의 time 모듈에 대해 작성하려고 한다. 이 모듈은 datetime 모듈과 달리, time.py 파일이 존재하지 않는다. 무슨 말이냐면, 이 time 모듈은 Python이 아니라, 다른 언어로 작성되어 있다는 말이다. 그래서인지, 프로그래밍을 진행하다보면, datetime 모듈에 비해서 자주 사용하는 기능이 그닥 많지는 않다. 그리고, datetime 모듈과 유사한 기능을 가지는 함수도 있지만 약간 차이가 존재하기도 한다. 지금부터 자주 사용하는 time 내 모듈에 대해 하나식 알아보자. 1. time() 함수 time 모듈 내의 time() 함수는 현재의 시간을 표현한다는 점에서 datetime.now() 또는 datetime.today()와 유사하다. 하지만 표현 방식이.. 2020. 6. 8.
3. Python - datetime 모듈 이번 포스팅부터, Python의 표준 라이브러리의 자주 사용하는 기능들에 대해 하나씩 알아보려 한다. 그 중 첫 번째로 소개할 라이브러리는, Python에서 날짜와 시간을 출력하도록 만들어주는 datetime.py다. 모든 Python의 내장 라이브러리는 Python 폴더의 Lib 폴더에 저장되어 있다. 그리고 이 폴더 내에 datetime.py 문서를 에디터로 열어보면, 아래와 같이 datetime.py 내에 정의되어 있는 날짜/시간 관련 변수, 함수 및 클래스들을 확인할 수 있다. ** 에디터로 파일을 열면, 내용이 많아 어떤 함수와 클래스가 존재하는지 한 눈에 파악하기가 힘들다. 따라서, Python의 인터렉티브 모드로 진입하여, datetime 파일을 import 하고 dir(datetime)을 .. 2020. 6. 6.
2. Python - pip를 이용한 외부 패키지 설치, 삭제 Python에는 특수한 목적으로 사용할 수 있는 python 파일이 있다. 이전 포스팅에서 예시로 들었던 난수 생성 파일이나, 아니면 현재의 날짜와 시간 출력에 사용하는 datetime.py라는 파일도 존재한다. 이렇게 특정 목적을 위해 만들어진 파이썬 파일이나 파일이 들어있는 폴더를 표준 라이브러리라고 한다. 이 표준 라이브러리는 파이썬 설치 시, 자동으로 내장되는 것도 있지만, 파이썬 출시 이후 생성된 표준 라이브러리나 누군가가 만든 패키지를 인터넷에서 다운받아 사용할 수도 있다. 인터넷에서 표준 라이브러리나, 기타 타 사용자가 제작한 패키지를 다운받을 때 사용하는 Python 전용 툴이 존재하는데, 이를 pip, Python Install Package라고 한다. 2020년 6월 현재 다운받을 수 .. 2020. 6. 4.
1. Python - 패키지?? 표준 라이브러리?? Python 프로그래밍의 기본을 슬슬 땔 때 쯤이면, 아마 패키지와 표준 라이브러리라는 말을 슬슬 접하게 될 것이다. 필자는 사실, 처음 이 용어들을 들었을 때, 둘 사이 무슨 차이가 있는 것인지 이해를 하지 못했다(필자는 컴퓨터 관련 전공을 하지 않은 사람이다). 그렇다고 이해하지 않고 계속 Python 프로그래밍을 공부하려니, 혼란만 가중된다. 아마 필자와 같은 절차를 겪고 계신 분들이 적지는 않을 듯 하니(특히 독학이라면), 오늘은 Python의 패키지와 표준 라이브러리에 대해 정의를 하고 넘어가려 한다. 1. 패키지 필자의 Python 포스팅 중 import / from... import를 사용하여 다른 python 파일의 함수와 변수를 호출하는 방법을 보신 분들이라면, 조금 이해가 쉬울 수 있다.. 2020. 6. 3.
728x90
반응형