Strict Standards: Non-static method Soojung::addReferer() should not be called statically in /home/lifthrasiir/sites/sapzil.info/soojung/settings.php on line 79

Warning: Cannot modify header information - headers already sent by (output started at /home/lifthrasiir/sites/sapzil.info/soojung/settings.php:79) in /home/lifthrasiir/sites/sapzil.info/soojung/classes/Counter.class.php on line 63

Strict Standards: Non-static method Entry::getEntry() should not be called statically in /home/lifthrasiir/sites/sapzil.info/soojung/entry.php on line 51

Strict Standards: Non-static method Soojung::entryIdToFilename() should not be called statically in /home/lifthrasiir/sites/sapzil.info/soojung/classes/Entry.class.php on line 182

Strict Standards: Non-static method Soojung::queryFilenameMatch() should not be called statically in /home/lifthrasiir/sites/sapzil.info/soojung/classes/Soojung.class.php on line 55
TokigunStudio3 | 블로그: 생활 속의 파이썬

내용으로 바로 넘어 가기


TokigunStudio3

228 / 3282   


더 이상 이 블로그는 운영되지 않습니다. 새 블로그로 가 주세요.

생활 속의 파이썬

2004/11/05 PM 07:22 | 개발/파이썬 | 3 comments | 0 trackbacks | AllBlog: vote, to pocket

나는 파이썬을 여러 용도로 사용한다. 대충 정리하자면:

- 프로그래밍할 때 :)
- 계산기 대용
- 스크립팅 작업 혹은 배치 작업 용

정도인데, 오늘 또 다른 용도로 써 먹어 봤다. 무슨 일이냐 하면, Beatmania IIDX 10th OST를 드디어 받아서-_- 압축을 풀어 봤는데 파일 갯수가 안 맞는다. 분명 압축 파일 안에는 66개인데 풀면 64개더군... (일부는 파일 이름이 거시기하게 나오는 것 때문에 gvim으로 파일 이름 인코딩 바꿔서 이름 정확하게 고치기도 했다만...) 보니까 문제의 안 풀린 두 개의 파일은 shift-jis 인코딩에는 있는데 euc-kr에는 없는 문자들 때문에 이름 안에 ?가 들어 있었고, 덕분에-_- 제대로 풀리지 않은 것이었다.

좀 생각을 해 보다가 파이썬의 ZipFile 모듈이 생각났다. 바로 파이썬 인터프리터를 열고 테스트해 봤다.

>>> import zipfile
>>> p = zipfile.ZipFile('beatmania_iidx_10th_ost.zip')
>>> u = []
>>> for x in p.filelist:
...     try: print x.filename.decode('shift-jis').encode('euc-kr')
...     except: u.append(x.filename)
...
bmIIDX10thStyle_Back.jpg
bmIIDX10thStyle_cd1.jpg
(.................)
CD2/beatmania IIDX 10th Style Original Soundtrack CD2 - 26 - Toshiji Katoh - COSMIC RAISE (extend).ogg
>>> len(u)
3


3개의 파일 이름이 shift-jis에는 있고 euc-kr에는 없는 글자였다. 그래서 보니까, 하나(이게 u[0]이다)는 해당되는 글자는 없지만 그 글자의 코드에 해당하는 euc-kr 문자가 존재하는 덕분에 풀리긴 풀린 문자였고 (變의 약자였는데 그냥 정자로 고쳤다.) 나머지는 그렇지 않은 것들이었다. 결국 파일 이름을 손으로 고쳐 준 후-_- 파이썬으로 직접 압축을 풀었다. (참고로 빵집에서는 압축 파일 안에 있는 파일 이름을 못 바꾼다. orz)

>>> u1 = "beatmania IIDX 10th Style Original Soundtrack CD1 - 18 - (...).ogg"
>>> u2 = "beatmania IIDX 10th Style Original Soundtrack CD2 - 26 - (...).ogg"
>>> file(u1, 'wb').write(p.read(u[1]))
>>> file(u2, 'wb').write(p.read(u[2]))


이렇게 하니까 졸라 잘 된다. ;) 파이썬은 역시 프로그래밍 말고도 쓸 구석이 많은 언어이다. GvR(Guido van Rossom)이 새삼스레 존경스러워지는 저녁이었다. -_-;;;;

TrackBack URL: http://sapzil.info/soojung/trackback.php?blogid=172

Comment: Nera (2004/11/07 AM 12:12)

계산기 대용은 좋군요.
아직 배우는 도중이라 자유자재로 쓰기 힘들지만... 교수가 숙제를 많이 내줘서 조금 귀찮습니다 -_-;

Comment: 토끼군 (2004/11/07 PM 01:58)

Nera: 아주 강력한 계산기죠. 암. -,.-;;;

Comment: 맴피스 (2004/11/13 PM 11:21)

그걸 잘 활용하는 분도 존경스럽습니다. :-)

Copyright (c) 1995-2005, Kang Seonghoon (Tokigun).