아이폰용 이미지를 안드로이드용으로 바꾸기 위해 예섬에게 부탁했더니..

스크립트를 만들어서 줬다 -_-;
왜 내가 만들 생각을 못했을까? ;;

#!/user/bin/python

import os
import sys 
from PIL import Image

def walk(org_dir_path, new_dir_path):
    print "walk" + org_dir_path + " / " + new_dir_path
    for root, dirs, files in os.walk(org_dir_path):
        for name in files : 
            img_path = os.path.join(root, name)
            print 'resized file = ' + img_path
            img = Image.open(img_path)
            img_height, img_width =  img.size
            #print str(img_height) + 'X' + str(img_width)
            resize = (img_height /640.0 * 480, img_width /640.0 * 480)
            #print str(resize[0]) + 'X' + str(resize[1]) 
            changeSize(img, os.path.join(new_dir_path, name), resize)
                 
        # end of for
    # end of for
# end of function 

def changeSize(img, new_file_path, resize):
    #print str(resize[0]) + 'X' + str(resize[1]) 
    resized_img = img.resize(resize)
    resized_img.save(new_file_path)
# end of function 

if __name__ == "__main__" : 
    walk(sys.argv[1], sys.argv[2])
# end of main 
신고

'프로그래밍 언어 > <Python>' 카테고리의 다른 글

[파이썬] 이미지 크기 변환 배치  (0) 2011.06.12
py2exe with PMW  (0) 2010.12.28
py2exe  (0) 2010.12.28
[python]XML 처리  (0) 2010.10.12
[파이썬] CSV2SQL ver 0.1  (0) 2010.08.27
[python] Windows에서 커맨드창 하나 더 띄우기  (0) 2010.08.24
Posted by 소혼
TAG 파이썬
이전글 : py2exe 설치 및 간단한 예제

파이썬에서 사용하는 PMW라는 위젯이 있습니다.
(이전 글 참고 : PMW 설치하기PMW 위젯을 사용하는 방법)
간단히 말해, PMW는 다양한 위젯셋을 제공하는 라이브러리입니다.

그런데 이 PMW를 포함해서 실행파일을 만들 때 다소 까다로운 부분이 있습니다.
사용한 hello.py는 다음과 같습니다.
 import Tkinter
from Pmw import *

root = Tkinter.Tk()
Pmw.initialise(root)

root.mainloop()


그냥 생성하면 마치 잘 생성된것처럼 보이지만 아래 그림처럼 에러가 발생합니다.
(앞의 예제 파일을 수정하여 진행하므로, h:\project\python\py2exe 폴더에서 그대로 작업합니다.)


이를 해결하기 위해서는 먼저 PMW를 bundlepmw.py 를 이용해 생성을 해주어야 합니다.
bundlepmw.py는 PMW를 설치한 폴더 밑 bin이라는 폴더 밑에 있습니다.
저의 경우, C:\Python27\Lib\Pmw\Pmw_1_3\bin 가 됩니다. (Python 2.7 에 PMW1.3 설치)

해당 경로에서 bundle을 생성하기 위해 아래와 같은 명령어를 입력하겠습니다.
python bundlepmw.py C:\Python27\Lib\Pmw\Pmw_1_3\lib

정상적으로 잘 되면 좋겠지만, 안타깝게도 전 아래와 같은 에러가 발생했습니다.

에러 메시지는 regsub가 없다는 것입니다.
regsub는 deprecated 된 것 같습니다.(http://www.python-forum.org/pythonforum/viewtopic.php?f=3&t=2537&p=57943)
해당 모듈을 re로 교체합니다.
#import regsub
import re
사용하는 부분들이 5군데 정도 있는데 모두 교체합니다.
저의 경우 regsub.gsubre.sub로 교체했습니다.

교체가 잘 이뤄진 후 다시 해당 파일을 실행하시면, 에러 없이 Pmw.py 파일이 생성됩니다.
이후 생성된 Pmw.py을 작업중이던 스크립트가 있는 곳(저의 경우 h:\project\python\py2exe) 에 복사합니다.
또한, Pmw의 lib 폴더(저의 경우 C:\Python27\Lib\Pmw\Pmw_1_3\lib)에서 PmwBlt.py, PmwColor.py를 복사해 같은 경로에 넣습니다.

즉파일이 아래와 같이 존재하게 됩니다.

이제 다시 py2exe 생성을 시도합니다.
python setup.py py2exe

정상적으로 생성되고 dist 폴더 아래에 생긴 hello.exe를 실행하면 아래와 같이 됩니다.

신고

'프로그래밍 언어 > <Python>' 카테고리의 다른 글

[파이썬] 이미지 크기 변환 배치  (0) 2011.06.12
py2exe with PMW  (0) 2010.12.28
py2exe  (0) 2010.12.28
[python]XML 처리  (0) 2010.10.12
[파이썬] CSV2SQL ver 0.1  (0) 2010.08.27
[python] Windows에서 커맨드창 하나 더 띄우기  (0) 2010.08.24
Posted by 소혼
2010.12.28 20:28
py2exe는 파이썬 파일을 실행 파일로 만들어주는 모듈입니다.
이 글에서는 py2exe를 설치하고 간단한 예제를 돌려보겠습니다.

먼저 py2exe를 설치합니다.
http://sourceforge.net/projects/py2exe/files/py2exe/
에서 여러 버전의 py2exe를 설치할 수 있습니다.
이 글은 0.6.9 중에서도 python 2.7을 사용하겠습니다.
제가 사용한 파일명입니다.
py2exe-0.6.9.win32-py2.7.exe

다운로드 받으신 후 실행하시면 아래와 같이 Setup창이 뜹니다. python 경로를 바꾸지 않으셨다면 문제없이 Next만 눌러서 설치가 가능합니다.



설치가 완료되시면 간단한 python 예제를 만들어보겠습니다.(http://www.py2exe.org/index.cgi/Tutorial 을 따라하고 있습니다.)
hello.py
 print "Hello World!"

python hello.py를 실행하면 아래와 같습니다.

setup.py
 from distutils.core import setup
import py2exe

setup(console=['hello.py'])


python setup.py py2exe를 실행합니다.
아래와 같이 build, dist라는 폴더가 생깁니다.

dist 폴더 밑에 hello.exe를 실행하면 아래와 같습니다.


예제를 바꿔서 Tk로 작성한 Hello World (코드는 이전 예제 참조) 를 동일하게 생성해봤습니다.
별 무리 없이 나옵니다.

허접한 글이지만, 도움이 되셨다면 아래 손가락 꾹 눌러주세요.
신고

'프로그래밍 언어 > <Python>' 카테고리의 다른 글

[파이썬] 이미지 크기 변환 배치  (0) 2011.06.12
py2exe with PMW  (0) 2010.12.28
py2exe  (0) 2010.12.28
[python]XML 처리  (0) 2010.10.12
[파이썬] CSV2SQL ver 0.1  (0) 2010.08.27
[python] Windows에서 커맨드창 하나 더 띄우기  (0) 2010.08.24
Posted by 소혼
http://harookie.springnote.com/pages/759316 참고





위 예제를 가지고 간단한 테스트 코드 작성.
한글 나오는 법은 추후 분석해야 할듯.

  File "parser.py", line 33, in <module>
    u = unicode(s, 'euc-kr').encode('utf-8')
UnicodeDecodeError: 'euc_kr' codec can't decode bytes in position 49-50: illegal multibyte sequence

이런 에러가 난다.

신고

'프로그래밍 언어 > <Python>' 카테고리의 다른 글

py2exe with PMW  (0) 2010.12.28
py2exe  (0) 2010.12.28
[python]XML 처리  (0) 2010.10.12
[파이썬] CSV2SQL ver 0.1  (0) 2010.08.27
[python] Windows에서 커맨드창 하나 더 띄우기  (0) 2010.08.24
[wxPython 예제] 2. layout  (0) 2010.08.18
Posted by 소혼
완전하진 않지만 csv 포맷을 sql 포맷으로 활용하기 위해 변환하는 데 유용한 스크립트입니다.
SQL 형태로 만들어주지는 않습니다. 어떤 컬럼이 들어가는지 알 수 없기 때문입니다.
허접하지만 불펌은 정중히 사양하겠습니다.

csv가 만약 단순히 , 로 이루어져 있다면 이렇게 복잡하게 할 필요가 없으나 컬럼에 ,가 내용으로 들어가 있는 경우 "" 로 문자열들이 묶여 있게 됩니다. 따라서 단순히 ,로 split 할 수 없어서 이런 스크립트를 만들었습니다.

허접한 글이지만, 도움이 되셨다면 아래 손가락 꾹 눌러주세요.


신고

'프로그래밍 언어 > <Python>' 카테고리의 다른 글

py2exe  (0) 2010.12.28
[python]XML 처리  (0) 2010.10.12
[파이썬] CSV2SQL ver 0.1  (0) 2010.08.27
[python] Windows에서 커맨드창 하나 더 띄우기  (0) 2010.08.24
[wxPython 예제] 2. layout  (0) 2010.08.18
[TkInter 예제]2. Frame과 Layout  (2) 2010.08.18
Posted by 소혼
os.system("cmd.exe")를 하면 될 것 같았는데 되지 않았다.

이는 커맨드창에서 cmd.exe를 실행했을 때도 새 커맨드 창이 뜨지 않는 것과 같은 이유이다.

무척 쉬운 방법이 있음을 발견했다.

os.system("start")
당연히 커맨드창에서 start를 입력해도 동일하게 동작한다.

리눅스에서 터미널을 하나 더 띄울때는 그냥
gnome-terminal (gnome을 쓴다면)
konsole (KDE를 쓴다면)
xterm (간단한 터미널)

중 하나를 입맛따라 골라 쓰면 된다.


허접한 글이지만, 도움이 되셨다면 아래 손가락 꾹 눌러주세요.

신고

'프로그래밍 언어 > <Python>' 카테고리의 다른 글

[python]XML 처리  (0) 2010.10.12
[파이썬] CSV2SQL ver 0.1  (0) 2010.08.27
[python] Windows에서 커맨드창 하나 더 띄우기  (0) 2010.08.24
[wxPython 예제] 2. layout  (0) 2010.08.18
[TkInter 예제]2. Frame과 Layout  (2) 2010.08.18
[TkInter 예제]1. Hello World  (0) 2010.08.18
Posted by 소혼
TkInter와 비교하면서 하려니 노력이 두배나 드는 것 같네요.

어쨌거나 TkInter보다 wxPython은 layout 이 훨씬 더 훌륭하다는 생각이 듭니다.
당장 layout을 위해 absolute positioning과 다양한 sizer를 제공하고 있습니다.
http://www.zetcode.com/wxpython/layout/



비슷하게 만들려다가 졸려서 그냥 사이트 코드를 거의 가져오다시피 했습니다.
absolute layout의 예로 pos와 size를 줘서 원하는 위치 원하는 크기에 배치하는 것이 가능합니다.

TkInter와 유사한 코드는 내일 올려야겠네요.

허접한 글이지만, 도움이 되셨다면 아래 손가락 꾹 눌러주세요.
신고
Posted by 소혼
Tk는 레이아웃이 좀 귀찮은 것 같다. 그나마 grid라도 있어 얼마나 다행인지...

Frame은 여러 widget을 packing하는데 사용할 수 있는데 packing하는 방법이 너무 단조롭다는 단점을 갖고 있다.
이러한 문제는 grid를 이용해 다소 보완할 수 있다.
grid는 가상의 테이블이 있다고 생각하고 row, column 값을 넣어주면 된다.
가장 큰 row숫자와 column이 이 가상의 테이블의 열과 행의 크기를 지정하는 것 같다.
조심해야 할 점은 0,0부터 시작한다는 점

쓰는 법은 아무 위젯이나 .grid(row=?, column=?)이다.
단점은 너무 많은 위젯을 다 이런식으로 레이아웃을 잡으려면 테이블이 엄청 복잡해질 거라는 점인데. Frame을 적절히 섞어서 레이아웃을 잡아주면 될 것 같다.

허접한 글이지만, 도움이 되셨다면 아래 손가락 꾹 눌러주세요.
신고
Posted by 소혼
TkInter와 관련된 글들은 대체로 아래 주소에서 참고하여 작성할 듯 합니다.
http://infohost.nmt.edu/tcc/help/pubs/tkinter/index.html

먼저, python의 내장 GUI 라이브러리은 TkInter를 이용한 가장 간단한 예제

대충 인터넷 돌아봐도 TkInter로 HellowWorld 만드는 몇가지 방법이 있는 것 같지만, 이게 그나마 단순한 편에 속하는 것 같다.
App이라고 하는 class를 하나 만들고 __init__을 해주는데 이 때 Tk() 객체를 넘겨받을 수 있게 만들었다.
이 객체로부터 frame을 만들고 frame을 먼저 pack을 통해 root에 밀어넣는다.
Label은 frame의 자식으로 생성하는데 옵션으로 text만을 주었고 역시 pack을 통해 frame에 밀어넣었다.


허접한 글이지만, 도움이 되셨다면 아래 손가락 꾹 눌러주세요.
신고

'프로그래밍 언어 > <Python>' 카테고리의 다른 글

[wxPython 예제] 2. layout  (0) 2010.08.18
[TkInter 예제]2. Frame과 Layout  (2) 2010.08.18
[TkInter 예제]1. Hello World  (0) 2010.08.18
[wxPython]1. 첫번째 예제  (0) 2010.08.17
[wxPython] 0. 설치하기  (0) 2010.08.17
파이썬 Tk의 option_readfile('optionDB')  (0) 2010.07.06
Posted by 소혼
참고: http://www.joinc.co.kr/modules/moniwiki/wiki.php/article/wxpython_%C7%C1%B7%CE%B1%D7%B7%A1
%B9%D6

wxPython 예제 1 (리눅스)

조인C의 예제를 그대로 가져왔습니다.

아직 내용은 이해가 안가지만 하나씩 간단한 예제를 만들어보기에 앞서 구글링을 통해 얻은 예제입니다.
wxWidget을 공부하려다 말았는데 Windows API가 많이 생각나는 군요 ;;

앞으로 wxPython과 관련된 내용들은 http://www.zetcode.com/wxpython/ 을 많이 참고할 것 같습니다.

허접한 글이지만, 도움이 되셨다면 아래 손가락 꾹 눌러주세요.
신고
Posted by 소혼
이전버튼 1 2 이전버튼

티스토리 툴바