Python 에서 Dictionary라는 자료구조가 제공되는데, 이것은 Key 와 Value 로 요소가 이루어진다. 이번에 간단한 프로그램을 만들다가 Value 를 기준으로 Dictionary를 정렬할 필요가 생겼는데, 그 방법을 찾아보니 아래와 같았다. 이는 Python 2.4 이상에서 지원이 된다고 한다.

[코드]
#!/usr/bin/env python
# filename : dict_sort.py
from operator import itemgetter
 
dict = {}
dict['a'] = 2
dict['b'] = 1
dict['c'] = 5
 
print(sorted(dict.iteritems(), key=itemgetter(1), reverse=True))

[결과]
# python dict_sort.py
[('c', 5), ('a', 2), ('b', 1)]

PHP, Ruby 에 이어서, Python 에서도 중복파일 찾기를 만들어보았다.

# -*- coding: cp949 -*-
# 버전 3.2.2 이상
 
from operator import itemgetter
from hashlib import md5
import os
 
TARGET_DIR   = "M:\\PATH\\TO\\특정디렉토리"
LIMITED_SIZE = 10*(1024*1024) # 10MB
 
 
def md5sum(filename, buf_size=4068):
    m = md5()
    with open(filename, 'rb') as f:
        data = f.read(buf_size)
        while data:
            m.update(data)
            data = f.read(buf_size)
    return m.hexdigest()
 
 
def main():
    hash_cnt  = {}
    file_list = []
    for p, ds, fs in os.walk(TARGET_DIR):
        for f in fs:
            filename = os.path.join(p, f)
            if not os.path.isfile(filename) : continue
            if os.path.islink(filename) : continue
            if os.path.getsize(filename) < LIMITED_SIZE: continue
            crc = md5sum(filename)
            if crc in hash_cnt:
                hash_cnt[crc] = hash_cnt[crc] + 1
            else:
                hash_cnt[crc] = 1
            file_list.append(crc+"|"+filename)
 
    for hash, cnt in sorted(hash_cnt.items(), key=itemgetter(1), reverse=True):
        if cnt < 2: continue
        print("\n["+hash+"]")
        for item in file_list:
            (hash2, filename) = item.split("|")
            if hash == hash2 : print(filename)
 
 
if __name__ == '__main__':
    main()

시스템에 설치된 python 의 버전이 낮아서 문제가 되는 경우가 있을 수 있다. 또는 특정 버전의 python 이 필요할 때도 있다. 이 것을 해결해주는 툴이 있는데, 바로 pythonbrew 이다. Ruby 의 rvm, Perl 의 perlbrew 와 같은 것이라고 보면 된다. 이것을 설치하고 간단하게 사용하는 방법을 알아보도록 하자. *^^* 아래는 CentOS 5.6 에서 테스트된 것이다. 다른 OS에서도 잘되리라 믿는다. 아마도 Windows 에서는 안될 것이다. Python 소스를 컴파일해서 설치하기 때문에~~~

  1. 먼저 pythonbrew를 설치한다.
    # easy_install pythonbrew
    # pythonbrew_install
    
    or
    # curl -kL http://github.com/utahta/pythonbrew/raw/master/pythonbrew-install | bash
    
    설치를 완료하면 ~/.pythonbrew 가 생성된다. 그리고, 여기에 모든 파일들이 들어있다.
  2. .bashrc 에 다음을 추가한다.
    export PATH=~/.pythonbrew/bin:$PATH
    . ~/.pythonbrew/etc/bashrc
    
  3. Python 2.7.1 설치해보기
    # . .bashrc
    # pythonbrew install --force 2.7.1
    
  4. Python 2.7.1 사용해보기
    # pythonbrew use 2.7.1
    # python -V
    Python 2.7.1
    
  5. Python 시스템에 설치된 원래 버전 사용하기
    # pythonbrew off
    # python -V
    Python 2.4.3
    

파이썬 프로그램을 개발하기 위해서는 굳이 IDE가 없어도 되지만, 조금이라도 편리한 환경을 원하는 개발자는 Eclipse 를 이용하면 된다. 여기에 Pydev 라는 플러그인을 설치해서 사용하면, 각종 파이썬 프로젝트를 진행할 수 있다. 어렵지는 않지만, 간단히 이를 구성하는 방법을 정리해보았다. ^^

  1. http://java.oracle.com 에서 최신 JDK를 다운로드하여 설치한다. (JAVA_HOME, PATH 환경변수 설정한다.)
  2. http://python.org 에서 최신 Python 을 다운로드하여 설치한다. (예: C:\Python31 에 설치했다고 가정하고, PATH 환경변수 설정한다.)
  3. http://eclipse.org 에서 Eclipse IDE for Java Developers 최신 버전을 다운로드하여 압축을 풀고, C:\eclipse 에 복사하여 설치한다.
  4. eclipse.ini 를 열어서 마지막에 -Dfile.encoding=UTF-8 를 추가한다.
  5. eclipse 를 실행한 후에, Window → Preferences → General → Content Types 의 Text 를 선택하고, Default Encoding 에 UTF-8 을 입력한다.
  6. Help → Install New Software… 메뉴를 선택한다.
  7. Work with: 에 http://pydev.org/updates 를 입력하고, Add 버튼을 클릭한다.
  8. Add Repository 창이 나오면, Name 에 Pydev 를 입력하고, OK 버튼을 클릭한다.
  9. 그러면, PyDev 와 PyDev Mylyn Integration 이 추가되며, 이 중에서 PyDev 만 체크하고, Next 버튼을 클릭한다.
  10. Calculating requirements and dependencies 를 네트워크 상태에 따라서 오랜시간 진행한다.
  11. 다음 화면(Install)이 나오면 Next 버튼을 클릭한다.
  12. 라이센스 리뷰화면에서 Accept 에 체크하고 Finish 버튼을 클릭한다.
  13. 그러면, 최종 설치를 진행할 것이다. 이 부분 역시 시간이 걸린다.
  14. 설치 중간에 Selection Needed 창이 나오며, Apatana Pydev; Pydev; Apatana 를 체크하고, OK 버튼을 클릭한다.
  15. 설치가 완료되면, Restart Now 버튼을 클릭하여, eclipse 를 재시작한다.
  16. Window → Preferences → Pydev → Interpreter → Python 을 선택한다.
  17. New 버튼을 클릭하면, Select interpreter 창이 나온다.
  18. Interpreter Executable 에는 C:\Python31\python.exe 을 입력하고,
  19. Interpreter Name 으로 Python 3.1.2 를 입력한 후, OK 버튼을 클릭한다.
  20. 이제, 라이브러리를 선택하는 창이 나오며, 그대로 두고 OK 버튼을 클릭한다.
  21. 마지막으로 Preferences 의 OK 버튼을 눌러서 마무리한다.
  22. 이제, 프로젝트를 생성하여, 개발 시작하시면 되겠다. *^^*
  23. 한가지 주의할 점은, Django 로 개발하려고 한다면, 먼저 Django 를 설치하자.

+ Recent posts