콘텐츠로 건너뛰기
Home » 파이썬 » Page 8

파이썬

파이썬에서 한글이 깨진다고요? – 파이썬의 한글 입출력과 인코딩에 대해

파이썬의 한글 인코딩에 대해

파이썬의 대화형 인터프리터를 사용하다보면 한글 인코딩의 함정에 빠지기 쉬운데 이를테면 소스를 그대로 해석기로 실행하는 경우에는 인코딩 에러가 안나던 것이, IDLE을 통해서 실행해보면 오류가 난다거나 그 반대의 경우가 있다. 이렇게 이해할 수 없는 상황을 어떻게 해야할까?

몇년 전이라면 그것은 MS의 잘못이거나 파이썬의 잘못이었다. 하지만 윈도에서 한글로 된 데이터를 다뤄야 하는데 파이썬 2를 쓰고 있다면 그것은 매우 높은 확률로 당신의 잘못이다.

더 보기 »파이썬에서 한글이 깨진다고요? – 파이썬의 한글 입출력과 인코딩에 대해

인자를 받는 모양의 데코레이터 작성법

flask로 간단한 서버를 만드는 예제를 보면 좀 특이한 형태의 데코레이터 패턴을 발견할 수 있다. 바로 @app.route('/path')와 같은 모양의 인자를 받아 함수를 실행한 모양의 데코레이터가 그것이다. 흔하게 쓰이는 데코레이터 패턴이라면 @app.route 와 같이 함수나 클래스의 이름만 써서 사용하는데, 이러한 함수를 실행하는 꼴로 사용할 수 있을까? 물론 그렇게 만들 수 있으니까 쓰고 있을 것이다. 그래서 이런 모양의 데코레이터를 어떻게 만들 수 있을지에 대해 생각해 보았다.
더 보기 »인자를 받는 모양의 데코레이터 작성법

파이썬의 데코레이터와 고차함수

데코레이터(decorator)는 말 그대로 어떤 객체에 대해서 부가적인 기능을 덧붙이는 것을 말한다. 어떤 클래스에 대해서 기능을 추가하려 할 때에 보통 그 클래스를 서브 클래싱하는데, 파이썬에서 데코레이터는 클래스가 아닌 임의의 함수에 대해서 기능을 추가한다. 언뜻 보기에 별 의미 없을 것 같은 이러한 패턴은 특정한 맥락에서는 코드를 간결하게 만들면서 문법적으로 깔끔하게 정리되는 코드를 만들 수 있는 장점이 있다. 오늘은 파이썬의 데코레이터는 어떻게 만들어지며, 어떤 상황에서 쓰일 수 있는지 알아보도록 하자.
더 보기 »파이썬의 데코레이터와 고차함수

with 구문과 컨텍스트 매니저

파일이나 소켓과 같은 특정한 리소스에 액세스하는 경우에 일반적으로 해당 리소스를 열면서 제어를 위한 핸들을 얻고, 리소스의 회수를 위해서 모든 작업이 완료된 경우에는 반드시 해당 핸들을 닫는 식의 흐름이 필요하다. 하지만 리소스의 열기와 닫기 사이에는 예측하지 못한 변수가 발생할 수 있다. 특정한 조건에 의해서나 예외가 발생하는 등의 이유로 리소스의 정리를 못한채로 루틴이 끝나거나 프로그램이 종료되는 경우가 발생할 수 있다. 따라서 이런 경우에는  try/except/finally 구문을 통해서 흐름의 끝에서 리소스를 정리하고 루틴을 떠나는 형태로 코드를 작성하는 방법도 있지만, 이러한 방법 역시 예외가 발생하는… 더 보기 »with 구문과 컨텍스트 매니저

Sqlite3 모듈의 기본 사용법

간단한 예제로 sqlite3 모듈을 사용해서 데이터베이스를 조작하는 방법을 살펴보자. 파이썬은 sqlite3 데이터베이스를 사용할 수 있도록 sqlite3 모듈을 내장하고 있다. 기본적인 사용 순서는 다음과 같다. sqlite3.connect()를 사용해서 데이터베이스 파일을 열고 연결한다. connection 객체가 생성되며, 이를 통해 쿼리를 전달할 수 있다. connection.execute()를 사용해서 쿼리를 전송하고 실행할 수 있다. execute()의 결과로 cursor 객체를 얻게 되는데, 이 객체를 사용해서 영향을 받은 row의 수를 확인하거나, SELECT 문의 경우 각각의 row를 읽어올 수 있다.

[Python101] Iterable(3) – 튜플

튜플(tuple)은 ‘한 벌’의 의미로 의미상으로는 가장 원시적인 배열이다. 튜플 한 번 만들어지고 나면 수정이 불가능한 집합이다. 쉽게 말해서 리스트를 ‘얼리면’ 튜플이 된다. 튜플을 만드는 법 리스트를 정의할 때는 대괄호에 원소들을 써서 생성했다. 튜플의 경우에는 괄호에 원소들을 써서 만들 수 있다. 아래의 b는 터플이다. a = [1, 2, 3, 4] b = (1, 2, 3, 4) 터플의 원소는 리스트와 마찬가지의 방법으로 접근할 수 있다. 터플 이름 뒤에 대괄호를 쓰고 그 속에 인덱스를 넣으면 된다. b[2] # –> 3 b[:2] # –>… 더 보기 »[Python101] Iterable(3) – 튜플

[Python101] 004. 파일. 파일을 읽고, 파일에 쓰기

사용자로부터 입력을 받아 데이터를 처리하는 프로그램은 실질적으로 효율에 한계가 있다. 처리해야 하는 데이터를 사용자가 일일이 매번 입력해야 하기 때문이다. 컴퓨터는 귀찮고 반복적으로 처리하는 작업을 수월하게 하라고 있는 것이므로 프로그램은 가능한한 많은 과정을 자동화하는 방향으로 처리하는 것이 좋은 경우가 많다. 보통의 경우에는 다음과 같은 방식의 순서로  작업을 많이 처리하게 된다. 처리해야 할 데이터를 미리 준비 (텍스트 파일이나 엑셀 파일 등) 프로그램을 실행할 때 매개변수로 처리할 파일을 주고 실행한다. 프로그램이 데이터 파일을 읽어 들여서 데이터를 주르르르륵 처리한다. 처리한 결과는 또 다른 파일에… 더 보기 »[Python101] 004. 파일. 파일을 읽고, 파일에 쓰기

20091204 :: py2exe로 단일 실행 파일 만들기

이전에도 한 번 py2exe 모듈을 사용해서 파이썬 스크립트를 실행가능한 exe 파일로 만드는 부분에 대해서, 언급을 한 적이 있지요. 이렇게 py2exe를 사용하여 실행파일을 작성하면 파이썬 인터프리터가 lib 형태로 함께 만들어집니다. 이 것을 하나의 단일 실행 파일로 만드는 방법을 소개하고자 합니다. py2exe를 사용하여 빌드 스크립트를 작성할 때 option 값 내에 py2exe 부분에 bundlefiles 옵션을 1로 주게되면 모든 파일을 하나로 묶어주게 됩니다. 여기에 zipfile=none 옵션을 주면 이러한 묶어진 파일이 실행 파일 내부로 들어가게 되지요. 이와 별도로 dll 파일들은 실행 파일 내에 포함이 되지… 더 보기 »20091204 :: py2exe로 단일 실행 파일 만들기

20090404 :: 파이썬에서 환경 파일 다루기

얼마전 서브 블로그를 통해서 포스팅한 ‘netsh’를 사용해서 유선랜 설정 바꾸는 스크립트를 만들어서 잘 활용하고 있습니다. 요즘은 집 – 사이트를 왔다 갔다 하고 있어서 하루에 두 번씩은 랜 연결의 ip 설정을 바꿔주게 되는데요, 두 개의 배치 파일을 만들고 입력값에 따라 각각 배치 파일을 실행해주는 파이썬 스크립트를 사용중입니다. 그런데 참 욕심이라는게, 다른 설정을 필요로 하는 경우에도 손쉽게 이를 추가하면 좋겠다는 생각이 들더군요. 그래서 그 스크립트를 업그레이드 하기로 결심했습니다. 외부 설정 파일을 사용하여 여러 군데의 유선 랜 설정 정보를 저장해 두고, 프로그램 실행… 더 보기 »20090404 :: 파이썬에서 환경 파일 다루기

20090208 :: py2exe로 배포판 만드는 요령

사무실 컴퓨터에 접속하기 위해 vpn 연결을 자동으로 만들어주는 파이썬 스크립트를 하나 만들어서 사용 중인데, 나름 꽤 유용하게 잘 쓰고 있습니다.  자동으로 세팅값을 맞출 수 있도록 심혈을 기울여 제작한 탓에 파이썬과 pywinauto 모듈만 설치하면 노트북을 갈아 엎더라도 VPN 클라이언트 설정을 자동으로 복구해 주니 참 편하게 쓸 수 있더군요. 그런데 가끔은 제가 늘 쓰던 노트북이 아닌 다른 노트북을 가지고 다닐 경우도 있고 한데, 그 때마다 파이썬을 다 설치할 수도 없는 노릇이고 해서 아예 실행 파일 형태로 만들어서 USB 메모리에 넣어다니는 것이 어떨까… 더 보기 »20090208 :: py2exe로 배포판 만드는 요령