Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python Study 4- File, String

Python Study 4- File, String

AhnSeongHyun

May 18, 2015
Tweet

More Decks by AhnSeongHyun

Other Decks in Programming

Transcript

  1. 오늘 다룰 것들. 2 텍스트 I/O pickle glob 파일 및

    디렉터리 디렉터리 내 검색 파일 압축 유니코드 문자열 처리 with 문 명령줄 옵션 처리 codecs
  2. 텍스트 파일 읽고 쓰기 3  기본적인 파일 읽고 쓰기의

    방식 1) open 함수로 파일모드에 따라서 파일 연다. 2) 쓰기 혹은 읽기 수행 3) 파일 닫기 read(size) : size 만큼 읽어온다. 생략하면 전체
  3. 텍스트 파일 읽고 쓰기 4  줄단위로 쓰고 읽기, writelines(),

    readlines()  writelines 함수에서 list 자체를 입력하면, 한줄로 연결된 텍스트로 들어간다.  readlines 함수를 개행으로 구분된 줄단위를 list() 형태로 가져온다.
  4. 텍스트 파일 읽고 쓰기 5  readlines() 함수 사용시 파일내

    모든 텍스트를 줄단위로 끊어서 list()로 반환  readline() 함수는 한줄씩 가져오는 역할을 함.
  5. with 문 6 컨텍스트 관리자? 예외가 발생한 경우, 파일, 락,

    연결 등의 시스템 자원을 적절하게 관리해주는 역할 with 문을 빠져나오면 자동으로 파일이 닫힌다. C#의 using 문
  6. 유니코드 문자열 처리 8 파이썬의 기본 인코딩은 ASCII SyntaxError: Non-ASCII

    character '\xed' in file C:\workspace\study.py on line 17, but no encoding declared; 영어 외 문자를 소스코드에 썼는데 문제가 생겼다면? 이 코딩은 utf-8 이다라고 선언해줘야 함. # -*- coding:utf-8 -*-
  7. 유니코드 문자열 처리 9 일반 문자열을 유니코드로 변환을 하면.. 문제가

    생김 UnicodeDecodeError: 'ascii' codec can't decode byte 0xed in position 0: ordinal not in range(128) ‘한글’ 이라는 문자를 아스키코드로 간주하고 해석하는 문제 아스키가 아닌 UTF-8 으로 변경.
  8. 유니코드 문자열 처리 10 유니코드 문자열 만들기 1) 문자열 앞에

    u 를 붙이기 2) unicode()함수 이용 <type 'unicode'> 안성현 <type 'str'> => <type 'unicode'>
  9. 유니코드와 인코딩에 대해서 11 <type 'str'> 에 대해서? - 파이썬

    실행환경에 설정 세팅에 따라서 변경된 문자열. <type 'unicode'> - 파이썬 실행환경과 상관없이 통일된 문자체계를 가지는 코드로 변환 STR UNICODE decode encode UTF-8, CP949, ISO8859-1..
  10. 유니코드 문자열 처리 12 s1 type : <type 'str'> s2

    type : <type 'str'> s1 != s2 비교가 안되는 이유? 같은 str 형인데도 불구하고 인코딩이 다르게 되었다. 파이썬에서는 알수가 없다.
  11. 유니코드 문자열 처리 13 무엇으로 encode() 되었는지 알고 있다면, unicode

    로 변환해서 작업하는것이 정석 s1 type : <type 'str'> s2 type : <type 'str'> s3 type : <type 'unicode'> s4 type : <type 'unicode'> same [Finished in 0.1s] 사실 하나의 소스안에서 여러 인코딩을 연산을 위해서 unicode로 변환후, out 을 위해서 다 시 재변환하는 작업을 추천하긴 하지만, 개인적으로는 비추. 차라리, 모든 환경을 하나의 인코딩으로 세팅하는것이 정석 UTF-8
  12. codecs 14 유니코드 텍스트 I/O 에 사용되는 여러 문자 인코딩

    처리 아스키 외의 다른 인코딩 파일 읽고 쓴다. open() 함수에서 codecs 를 이용해서 인코딩을 지정하는것이 차이점!!
  13. pickle 15 임의의 파이썬 객체를 저장하는 모듈, 절임이라는 의미 파이썬

    객체(기본객체, 사용자 정의 클래스 인스턴스 등등)을 파일객체로 저장 및 로드 pickle 모듈 이용 파이썬 객체 파일 pickle.dump pickle.load
  14. pickle 18 load 사용법 object = pickle.load(파일객체) 특정 저장시점에 인스턴스를

    파일에 특정한 자료구조에 넣고 빼고 할 필요 없이 바로 dump를 통해서 인스턴스 자체를 저장하고 load 를 통해서 불러올수 있다는 장점!!
  15. 파일 및 디렉터리 19 path 관련 작업 commonprefix : 주어진

    리스트내 path 들에서 같은 부분을 찾아서 반환
  16. 파일 및 디렉터리 20 getatime : 접근시간 확인, 초 단위

    (1970년 1월 1일 이후) getctime : 생성시간 확인 getmtime : 변경시간 확인
  17. 파일 및 디렉터리 22 디렉토리 생성 및 삭제 mkdir :

    디렉토리 생성 maekdirs : 하위디렉토리까지 생성 rm : 디렉토리 삭제 removedirs : 상위 디렉토리까지 삭 제 rename : 이름 변경
  18. 파일 및 디렉터리 23 파일 관련 shutil : 복사/이동/이름변경 전문

    모듈 파일 복사 및 디렉토리 복사 한번에 ★
  19. 디렉터리내 검색 24 os.walk 이용 : 현재 디렉터리 부터 하위

    디렉터리 까지 모두 검색 : 각 검색시 현재 검색디렉토리, 검색된 디렉토리, 검색된 파일들 순으로 출력
  20. 디렉터리내 검색 25 특정 확장자의 파일만 골라내기  os.listdir 은

    특정 디렉터리 하나에 있는 요소들을 반환한다.  os.chdir 해당 디렉토리로 이동하는 함수  glob 모듈 : dir, ls와 같은 명령어 역할, 현재디렉터리 기준으로 필터링 수행된 결과 반환
  21. 압축 관련 27 gzip : GNU 프로그램의 gnuzip, gzip 압축관련

    모듈 - 데이터를 file.txt 에 추가하고, 해당 파일을 압축한다. 압축하기
  22. 압축 관련 28 파일모드만 주의하자. gzip 압축풀기 이미 있는 파일

    압축하기, 다 꺼내서 할 필요 없이 파일객체를 전달하자.
  23. 압축 관련 29 tarfile : tar 아카이브 파일을 조작할때 사용

    모드 설명 ‘r’ 읽기 전용, 압축되어 있으면 알아서 압축해제한다. ‘r:’ 압축없이 읽기 전용 ‘r:gz’ Gzip압축으로 읽기전용 ‘r:bz2’ Bzip2 압축으로 읽기전용 ‘a’, ‘a:’ 압축없이 추가용 ‘w’, ‘w:’ 압축없이 쓰기용 ‘w:gz’ Gzip압축으로 쓰기용 ‘w:bz2’ Bzip2 압축으로 쓰기용 10kb
  24. 압축 관련 30 압축을 하려면 a 모드가 아닌 w 로

    열어야 한다. 177 byte 압축파일 안에있는 파일명 변경하기
  25. 압축 관련 31 세부 tarfile 정보 보기 getnames() : 간단한

    정보 찍기 getmembers() : 자세한 정보 찍기 ['main.py'] [<TarInfo 'main.py' at 0x26a25b0>] main.py Modified : Thu May 22 15:51:18 2014 Mode : 0666 Type : 0 Size : 100 bytes
  26. 명령줄 옵션 읽기 33 > python study.py -f 'setup.py' -c

    'conf.ini' ['study.py', '-f', "'setup.py'", '-c', "'conf.ini'"]  sys.argv 리스트에 명령줄 옵션이 들어있다. 명령줄을 통해서 conf 파일이나 옵션 지정시 내부에서 첫번째 해줘야하는 일들.. 이런 삽질..
  27. 명령줄 옵션 읽기 34 optparse 모듈을 이용하자. p.usage() 를 통해서

    출력되는 부분 c:\workspace>python study.py -f 'setup.py' -c 'conf.ini' -n 5 -f [file] -c [config] -n [count] {'arg_conf': "'conf.ini'", 'arg_file': "'setup.py'", 'arg_count': 5} [] 파싱할 인자, 받을 변수, 받을 변수의 타입을 적어준다.
  28. 명령줄 옵션 읽기 35 부가정보 주기 c:\workspace>python study.py -f 'setup.py'

    --conf 'conf.ini' --number 5 -f [file] -c [config] -n [count] {'arg_conf': "'conf.ini'", 'arg_file': "'setup.py'", 'arg_count': 5} [] c:\workspace>python study.py -f 'setup.py' --conf 'conf.ini' --number 5 name -f [file] -c [config] -n [count] {'arg_conf': "'conf.ini'", 'arg_file': "'setup.py'", 'arg_count': 5} ['name'] c:\workspace>python study.py -f 'setup.py' --conf 'conf.ini' --number 5 name 2 -f [file] -c [config] -n [count] {'arg_conf': "'conf.ini'", 'arg_file': "'setup.py'", 'arg_count': 5} ['name', '2'] but, optparse 는 2.7 까지만 사용, 이후로는 argparse 로 대체
  29. 정리 36 # -*- coding:utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8')

    파일은 open.. close, 이게 싫으면 with문. 파이썬 문자열 형은 str 과 unicode, str은 인코딩 마다 다르다. UTF-8 환경이라면, 이거 쓰고 시작. codecs 로 파일도 인코딩을 맞춰주자. *.tar.gz => tarfile 이용 pickle 은 피클이다. 객체를 파일로 절인다. 명령줄은 optparse, argparse 사용. 삽질금지