파이썬: 44개의 글
Python Type Class, Meta Class 파이썬은 동적 바인딩 프로그래밍 언어입니다. 여기서 동적바인딩이란 프로그램 실행 중에 자료형과 함수의 타입이 결정되는 것을 말합니다. 즉 코딩을 할때 값이 어느 변수의 타입인지 할당이 되지 않고, 프로그램을 우리가 실제로 동작을 하는 동시에 자료형과 함수의 타입이 그때 그때마다 결정이 됩니다. 파이썬에서 하나의 장점이자 단점이 변수를 생성할때 type을 지정하지 않는것도 파이썬이 동적 바인딩 프로그래밍 언어라는 사실을 알 수 있습니다. 하지만 동적바인딩의 가장 단점은 타입이 정해져 있지 않기 때문에 정적 바인딩(사전에 자료형과 함수의 타입이 정해져있는)에 비해 실행 속도가 느립니다. 이번 글에서는 type class와 meta class에 대해서 설명..
들어가며 데이터 분석을 하다보면, 시각화(Visualization)을 해야한다. 우리가 물론 값을 눈으로 확인하면 되지만, 전체적인 추이를 확인하거나, 일정 패턴이 있는지 확인하기 위해서는 그래프만큼 좋은게 없다. 파이썬은 데이터 분석을 하기 위해한 모듈이 갖춰져 있어 많은 사람들이 사용한다. R이나 Matlab을 사용하는 사람도 많지만, 뭐 셋다 거의 비슷비슷하다. 내 주위 사람은 matlab을 사용하다가 파이썬으로 넘어오기도 한다. 그 이유는 약간 파이썬이 구현적인 느낌을 받는다나... 사실 왜 넘어온지는 모르겠지만 일단! 파이썬에서는 Pandas, Matplotlib, Scipy, Numpy를 이용하고, 거기에 machine-learning을 하기 위한 scikit-learn만 잘쓰면 어디서 데이터..
들어가며 로깅을 할때나, 어떤 특정 시간에 Event를 발생하고 싶을 경우에는 현재 시간 및 그 이전, 이후 시간을 가져올 수 있어야 합니다. 특히 로깅을 할때는 현재시간을 가져오는건 필수 중에 필수라고 할 수 있습니다. 또한 현재 시간으로 부터 1시간 뒤에 파일에 저장해 라는 명령을 할때는 특정 시간을 입력하거나, 현재시간으로 부터 1시간을 지정해 주면 됩니다 물론 timestamp에서 1000(1초) * 60 * 60 * 1 과 같이 연산을 통해서도 가능하지만, java의 Calendar와 같은 역할을 하는 datetime을 이용하면 쉽게 할 수 있습니다. datetime은 기본 모듈이고 바로 사용이 가능합니다. datetime.timedelta()를 이용하면 시간에서 일정 시간을 빼고 더할 수 있습..
들어가며 파이썬 표준 라이브러리인 logging은 아주 강력한놈입니다. 이제 다시는... print문과 file.write를 이용해서 로그를 남기지 마세요. 우리 스마트하게 로그를 남깁시다. logging은 다양한 기능을 제공하고 있습니다. 스트림과 파일에 동시에 로그를 남기거나, 로그 레벨에 따라 출력되는 로그를 제한 할 수 있습니다. 또한 로그는 축적되는 양이 많기 때문에 예외를 처리해야 하는 내용이 많습니다. 그 중에 파일 크기가 일정 크기를 넘어가면 새로운 로그 파일을 자동으로 생성하는 기능 또한 제공합니다. 아래 래퍼런스를 통해 더 자세한 내용을 확인 하실 수 있습니다. Singleton Pattern으로 CustomLogger를 작성하여 사용한 사례를 포스팅한 내용이 있습니다. 어떤식으로 로깅..
파이썬 파일 옮기기 - File Move구현하기 들어가며 파이썬에서 파일을 옮길때 사용하는 코드를 설명할 생각입니다. 다른 블로그에서 os.rename을 통해 파일을 옮기려고 했는데, 옮겨지지가 않더라구요. 그래서 찾은 다른 방법입니다. shutil이라고 기본으로 내장이 되어있는 모듈을 사용해서 .move를 통해 파일을 이동하는 방법입니다. 예제코드 예제 코드는 "/home/banana/test.txt"의 파일을 "/home/banana/txt/test.txt"로 옮기는 코드입니다. src와 dir을 지정해주면 됩니다. 간단하네요. import shutil filename = 'test.txt' src = '/home/banana/' dir = '/home/banana/txt/' shutil.move(s..
파이썬 예외처리(Exception 처리하기) 예제코드 프로그래밍을 하면서 중요한 것 중에 하나가 바로 예외처리입니다. Exception의 종류는 코드 상에서 컴파일러가 처리해주는 Exception이 있고, 실행하는 과정에서 발생하는 Exception이 있습니다. 실행 과정에서 생기는 Exception은 처리하지 않을 경우에는 프로그램이 종료되는 엄청난 치명적인 결과를 직면할 수 있기 때문에, 예외처리를 꼭 해줘야 하는데요. 이번에는 python에서 예외처리하는 방법에 대해서 설명하려고 합니다. 저 같은 경우에는 예외처리를 다 잡아놓고 detail을 항상 출력을 해서 확인을 하고 있습니다. 중간에 종료되는게 너무 싫어서 프로그램은 한번 돌고, 만약 실행과정에서 발생하는 Exception이 발생하면 화면에 ..
BeautifulSoup UTF-8 설정 (Encoding, 한글 깨짐 현상) 들어가며 저에게 진짜 파이썬을 하면서 가장 짜증날때가 언제니? 라고 하면 자신감있게 "이놈의 UTF-8 인코딩이다." 라고 말을 하고 싶을 정도로 화가 날때가 있습니다. 특히 다른언어를 접하다가 python을 접하면 가장 먼저 이해하기 어려운게 encoding인데요. 이번에도 beautifulsoup을 통해 웹페이지의 소스를 가져오는곳에서 인코딩 문제가 발생했습니다. 웹페이지의 content를 가져와서 화면에 뿌리면 평소에 보지 못한 피라미드에 적혀있을 법한 상형문자들이 보입니다. 그 애들이 무엇을 말하고 싶었는지 알기 위해서는 인코딩 설정이 필요합니다. 해결하는 방법은... 매우 간단합니다. 한줄도 아닌 1/3줄을 추가하시면..
Web 스크랩 및 파싱하기 :: BeautifulSoup 사용방법 들어가며 웹에서 페이지를 스크랩하는 방법에 대해서 설명하려고 합니다. 웹페이지를 스크랩한다는 말은 웹 페이지에서 [오른쪽 마우스 클릭] --> [소스보기] 에 있는 텍스트를 가져온다고 생각하시면 됩니다. 웹에 있는 페이지에 특정 단어나, 이미지의 url 등을 가져오고 싶은 경우가 있습니다. 일단 가져오기 전에 feasibility(가능성)를 따져본 후에, 가능 하다면 페이지의 소스코드를 가져오고, 일정 포맷에 있는 데이터를 가져오면 됩니다. 내가 원하는 페이지에 들어간다. [그림 1] 인터넷 페이지 오른쪽 마우스를 클릭한 후에 View Source를 누른다. (또는 페이지 소스보기) [그림 2] 인터넷 페이지 소스코드 구현하기 구현해야 하..
Dictionary key기준, value기준으로 정렬하기 들어가며 파이썬을 사용하다 보면 자주 List만큼 자주 사용하는 객체가 있으니 그것이 바로 dictionary입니다. 그렇기 때문에 dict을 자유롭게 다룰 줄 알아야 합니다. 자 그렇다면 기본 중에 기본인 정렬하는 방법에 대해서 알아보겠습니다. 일단 dict의 형태에 대해서 간단하게 설명하면 key, value의 쌍으로 이루어져 있습니다. 예제를 통해 알아보겠습니다. 구현하기 operator를 통해 정렬을 할 수 있습니다. 두개의 차이는 operator.itemgetter()에서 1, 0을 넘기는 거에 따라 key로 정렬, value로 정렬을 할 수 있습니다. 1을 값을 기준으로 정렬을 할때 사용하고, 0은 키를 기준으로 정렬이 가능합니다. v..
들어가며 파이썬으로 코딩을 할때 많은 에러가 발생하지만 가장 자주 마주하는 에러는 인코딩 문제일 것이다. 파이썬은 기본 인코딩이 ASCII코드이다. 우리가 파이썬 한글이 포함된 스크립트를 실행할때 발생하는 에러와 에러 해결 방법에 대해서 설명하겠다. 에러 내용 SyntaxError: Non-ASCII character '\xeb' in file app.py on line 166, but no encoding declared; see http://python.org/dev/peps/pep-0263/ f or details 해결 방법 .py의 파일 위에 나는 utf8, euc-kr의 인코딩을 기본으로 사용할 것이다. 라고 명시적으로 입력을 해주면 문제가 해결된다. #-*- coding: utf-8 -*- 또..