본문 바로가기

반응형

Python

(20)
[Python] Python 3 struct.pack(): char format requires a bytes object of length 1 예전에 Python 2.x 버전에서 만들어 사용했던 프로그램을 최근에 다시 사용해야 하는 일이 있었습니다. 오랜만의 파이썬 작업이었던지라 환경을 새로 세팅하는 김에 3.x 버전의 파이썬을 설치하고 실행..했습니다만?? 다음과 같은 오류가 나옵니다. Python 3 struct.pack(): char format requires a bytes object of length 1 이게 무슨 말인가? "char 형식은 1 바이트 길이의 객체가 필요합니다"? 아니 이미 pack()함수의 인자로 넘어가는 것은 1byte가 아닐 수 없는 영문 글자 한 글자 인데요. data = 'c' struct.pack('c', data) 그래서 찾아 보았습니다..뭐가 문제인지. stackoverflow.com/questions/..
구글/iOS 인앱 결제 서버 검증 - Python (In-app purchase server side verification in Python) iOS import urllib, urllib2 import json import datetime import base64 class IOSInappPurchaseVerifier : url = "https://sandbox.itunes.apple.com/verifyReceipt" password = "PASSWORD" # receipt data should be encoded by base64 def verify(self, receipt, signature) : req = { "receipt-data": receipt,"password": IOSInappPurchaseVerifier.password } headers = {'Content-Type': 'text/Json; charset=utf-8'} re..
[Python] 파이썬용 print_r php에서는 print_r이라는 유용한 함수가 있어, 특정 객체가 가지고 있는 값들을 재귀적으로 따라 들어가며 모든 변수들의 값을 다 보여준다. python에도 pprint 라는 모듈이 있긴 하지만 변수가 객체인 경우에는 더 이상 재귀적으로 따라 들어가지 않고 해당 객체의 주소만 프린트하고 종료한다. 결론은 불편하다. 그래서 만들었다. 파이썬용 print_r : 만들고 보니 역시 세상은 넓고 천재는 많다는 사실을 다시 한번 깨달았다. var_dump(https://github.com/sha256/python-var-dump)라고 변수 이름 부터 타입까지 아주 깔끔하게 뽑아 주는 라이브러리를 누가 만들어 github에 올려 놓았다. 자세한 사항은 위 링크를 따라 가보면 된다(만일 링크가 깨져 있다면 어쩔수..
중앙 집중형 deploy tool - "Fabric" 만일 현재 사용하고 계신 바이너리 & 설정 deploy tool이 없다면 'Fabric(http://docs.fabfile.org/en/1.7/)' 이라는 녀석을 한번 살펴 보실것을 권해 드립니다. What is "Fabric"? Fabric is a Python (2.5 or higher) library and command-line tool for streamlining the use of SSH for application deployment or systems administration tasks. - http://docs.fabfile.org/en/1.7/ 간단하게 어플리케이션 배포나 시스템 관리를 위해 사용되는 툴이랍니다. 뭔 말인가 싶어 다른 검색을 좀더 해봅니다. You can use Fa..
Python embedding 1 - Overview '눈이 올것 같은 날씨군..' 이라고 생각하는 순간 신기하게도 눈이 내리는 군요. 그것도 아주 펑펑... 커플 분들에게는 정말 즐거운 날씨 일것이라는 생각이 듬과 동시에 어쩌면, 올해 크리스마스는 화이트 크리스마스가 될지도 모르겠다는 불길한 느낌이 오는군요. 제 느낌이 어쨌든, 내리는 눈이 너무 이뻐서 사진이라도 찍어 둘까하다가 관뒀습니다. 추억은 어디까지나 추억으로 남아야지, 기록으로 남겨진 추억은 나중에 감정이 사라져 버리고 나면 씁쓸함만이 남더군요. 헛소리를 하는 것을 보니 지병이 다시 도지는가 봅니다. '후천적 연말 크리스마스 우려 증후군'이라고 솔로 기간이 길어지다 보면 이런 병도 생깁니다. 이 글을 읽고 계시는 여러분들도 조심하시기 바랍니다. 언제 저 처럼 되 버릴지 모릅니다.ㅎㅎ 오늘은 파이..
파이썬으로 utf-8 문서 읽기 들어가며 위키(웹)에서 작성된 텍스트 파일을 읽어 들여 특정 문자열을 변환 해야 하는 이슈가 있었습니다. 예를 들자면 : = 제목 = * 내용1 * 내용2 위의 내용중에서 '제목'이라는 문자열을 찾아 모두 '타이틀'로 변경 하는 작업이 필요하다고 생각하시면 됩니다. 변환 하는 방법이 그렇게 어렵지는 않을 것입니다. 간단히 생각을 해보면 : 디렉토리를 순회 하며 파일의 이름들을 얻어 온다. 파일을 열어 특정 문자열을 찾아, 변경 한다. 파일을 저장하고 다른 파일들에 대해 2번 과정을 적용한다. 그렇게 문자열을 처리하는데 편리한 기능들을 많이 제공하는 언어를 사용한다면 그렇게 어려운 일도 아닐 것 입니다. 파이썬을 이용하자면 아래와 같은 코드가 나올 수 있겠지요 : import os for root, dir..
Python embedding 4 - PyErr_Print() 를 파일로 남기기 파이썬 임베딩을 하면서 가장 유용하게 사용되는 함수 중에 하나가 PyErr_Print()라고 하면, 대부분 공감 하시리라 믿습니다. PyErr_Print()를 통해 우리는 파이썬 모듈을 로드하고 실행하는 중에 발생하는 모든 에러들과 예외 들에 대해 성실하고도 친절한 답변을 받게 됩니다. 그런데 가끔은 PyErr_Print()가 보여 주는 메시지들을 보지 못하는 환경에 놓일 때가 있습니다. 예를 들자면 윈도우의 서비스 프로세스나 리눅스의 데몬 프로세스 같은 경우지요. 앞에 말한 두 종류의 프로세스들은 프로세스의 특성상 stdout 이라던지 stderr과 같은 표준 출력을 지원하지 못하도록 막아 버리는 경우가 대부분 입니다. 그리고 우리의 PyErr_Print()함수는 stderr을 통해서 메시지를 보여 주..
Python embedding 3 - 캐싱 된 모듈 다시 로드 하기 Python embedding 1 - Overview Python embedding 2 - Calling Python function from C/C++ Appilcation 얼마 전 C++코드에서 파이썬 모듈을 로드해 사용 할 수 있는 임베딩(Embedding)이라는 기술에 대해서 포스팅 한적이 있습니다(http://kukuta.tistory.com/83). 그 때 제가 임베딩을 사용한 목적은 '로직이 변경 되었을 때, 재 컴파일이 필요 없이 동적인 로직의 변경이 가능하도록 한다'였습니다만, 파이썬에서는 모듈이 한번 로드 되면 캐싱 되는 기능을 가지고 있더군요. 모듈이 캐싱되어 있다는 것이 보통의 경우에는 성능향상등 각종 이로운 현상을 만들어 주지만, 이번 제가 하려는 경우에는 그다지 도움이 되지 않더..
Python embedding 2 - Calling Python function from C/C++ Appilcation /** 에구..날씨는 추워지고 옆구리는 허전해 지고, 덩달아 지갑까지 말썽이군요. 얼마전에 다녀가신 파산 신의 영험하심으로 아직도 가난에 허덕이고 있습니다. 인생 살아 오면서 여지껏 만원 이상의 돈을 빌려 본적이 없는 것 같은데, 태어나서 처음으로 20만원이라는 거금을 빌려 보았습니다. 하지만 중요한 것은 이 돈이 제 생활비로 들어 갈 것이 아니라, 여러 경조사금으로 모두 날아갈 돈이라는 것..ㅠㅠ 차마 더 어려우신 분들이 많기에, 여러분의 불우 이웃이 바로 접니다~..라는 말은 절대 하지 못하겠네요. 날씨가 추워지고 있습니다. 주변에 어려우신 분들 한번 둘러보시고, 살짝쿵 도움의 손길 한번 건네 보세요. 평소에는 아무렇지 않게 살다가 연말에만 도움의 손길 내밀려니 왠지 쑥스러워서 그러지 못하시는 분들~..
Python 정규 표현식 메타 문자 반복 메타문자 문자 의미 예 * 0 회 이상 반복 ca*t => ct, cat, caat, caaat, … + 1 회 이상 반복 ca+t => cat, caat, caaat … ? 0회 혹은 1회 ca?t => ct, cat {m} m회 반복 ca{2}t => caat {m, n} m회부터 n회까지 반복 ca{2, 4}t => caat, caaat, caaaat >>> import re >>> re.match('cat', 'caat').group() 'caat' >>> re.match('cat', 'cat').group() Traceback (most recent call last): File "", line 1, in ? AttributeError: 'NoneType' object has n..

반응형