docs : http://rarfile.readthedocs.org/en/latest/api.html
download : https://pypi.python.org/pypi/rarfile/
그리고 압축을 풀 unrar :
rarfile을 커맨드라인으로 설치한다. 다운받은 rarfile경로로 들어가서. python.exe setup.py install.
압축을 풀 unrar을 실행시켜서 UnRAR.exe파일이 나오면 그걸 원하는 경로에 갖다둔다.(나같은경우는 C:\의
개인폴더.) rarfile이 설치된 경로로 들어간다.(Libs에서 rarfile.py를 찾아보면 나옴.) rarfile.py파일을 열어서
#: 'unrar', 'rar' or full path to either one
UNRAR_TOOL = "unrar" 이런 라인을
#: 'unrar', 'rar' or full path to either one
UNRAR_TOOL = "C:\\Users\\Ko\\UnRAR.exe"
이렇게 바꿔준다. 경로는 내가 UnRAR을 넣은 경로. 저 부분은 두부분이 있다. 주석으로 둘러쌓인 부분과
드러난 부분인데, 내가 바꾼 부분은 주석 부분이 아닌 드러난 부분이다.(주석 부분 바꾸면 안 바뀜.)
# -*- encoding: cp949 -*- import rarfile filename = 'dolls.rar' r = rarfile.RarFile(filename) r.extract('')
처럼 테스트.
3번 압축파일 :
이제 3번을 풀어보겠다. 3번은 참 재미있는 문제이다. 문제이름이 Compression tree인데 말 그대로 압축파일의 나무이다. 이게 진짜 나무처럼 2개씩 나뉘어져서 depth가 10칸인가 된다. 깊이가 10칸이면 압축파일이 2^10인 1024개라는 소리이다. 당연히 손으로 풀면 못푼다.(노가다 해봐도되고 ^^;) 위에서 언급한 rarfile을 사용해서 풀었다. 먼저 압축을 전체 다 푼다. 재귀함수를 이용해서 전체 다 풀었다.
# -*- encoding: cp949 -*- import rarfile def unrar(rf): for f in rf.infolist(): try: print f.filename r = rarfile.RarFile('file\\'+f.filename) r.extract('file\\') unrar(r) except: pass rf = rarfile.RarFile('dolls.rar') rf.extract('file') unrar(rf)
요런식으로 적으면, 내 파이썬 파일에 file이라는 파일 하나만 만들어주면 거기다가 알아서 압축을 다 푼다. txt파일이 풀면서 알아낸건데 depth가 10칸이 아닌 곳도 있어서 try, except로 예외처리를 해줘야 한다. 이러면 다 풀리는데 여기서 또 .txt확장자만 다 검사하면서 내부 내용이 Nothing here...가 아닌게 있으면 출력하도록 해보면 된다.
# -*- encoding: cp949 -*- import os for dirname, dirnames, filenames in os.walk('.'): for filename in filenames: file = os.path.join(dirname, filename) if file.find('txt') != -1: f = open(file,'r') for l in f: if l!='Nothing here...': print l exit(0)
요런식으로 현재 파이썬 폴더 안의 모든 디렉터리,파일 등을 가져와서 txt라는게 존재하면서 내부 내용이 Nothing here...가 아니면 출력한다. 해당 소스를 실행시 주의점은 내가 압축을 푼 file폴더에서만 찾는게 아니라 현재 파이썬 디렉터리 전체에서 txt를 찾으므로 나머지 txt는 확장자를 바꿔주던가 없애던가 해야 한다.
'Python > 2.7 information' 카테고리의 다른 글
pythonpy, 리버스 커넥션 쉘(python 버전) (0) | 2015.02.09 |
---|---|
스크린샷 찍는 pyscreenshot, 소리 재생 winsound 모듈. (0) | 2015.01.29 |
beautifulsoup (0) | 2015.01.14 |
python win32api (0) | 2015.01.13 |
유니코드, christmasctf a letter to her 500, los xavis (0) | 2015.01.02 |