2. 오늘 다룰 것들.
2
텍스트 I/O
pickle
glob
파일 및 디렉터리
디렉터리 내 검색
파일 압축
유니코드 문자열 처리
with 문 명령줄 옵션 처리
codecs
3. 텍스트 파일 읽고 쓰기
3
기본적인 파일 읽고 쓰기의 방식
1) open 함수로 파일모드에 따라서 파일 연다.
2) 쓰기 혹은 읽기 수행
3) 파일 닫기
read(size) : size 만큼 읽어온다. 생략하면 전체
4. 텍스트 파일 읽고 쓰기
4
줄단위로 쓰고 읽기, writelines(), readlines()
writelines 함수에서 list 자체를 입력하면, 한줄로 연결된 텍스트로 들어간다.
readlines 함수를 개행으로 구분된 줄단위를 list() 형태로 가져온다.
5. 텍스트 파일 읽고 쓰기
5
readlines() 함수 사용시 파일내 모든 텍스트를 줄단위로 끊어서 list()로 반환
readline() 함수는 한줄씩 가져오는 역할을 함.
6. with 문
6
컨텍스트 관리자?
예외가 발생한 경우, 파일, 락, 연결 등의 시스템 자원을 적절하게 관리해주는 역할
with 문을 빠져나오면 자동으로 파일이 닫힌다.
C#의 using 문
7. 기타함수
7
임의 접근 , seek(n) n 만큼 이동
012345
python
닫혔는지 확인, closed
8. 유니코드 문자열 처리
8
파이썬의 기본 인코딩은 ASCII
SyntaxError: Non-ASCII character 'xed' in file C:workspacestudy.py on
line 17, but no encoding declared;
영어 외 문자를 소스코드에 썼는데 문제가 생겼다면?
이 코딩은 utf-8 이다라고 선언해줘야 함.
# -*- coding:utf-8 -*-
9. 유니코드 문자열 처리
9
일반 문자열을 유니코드로 변환을 하면.. 문제가 생김
UnicodeDecodeError: 'ascii' codec can't decode byte 0xed in position 0:
ordinal not in range(128)
‘한글’ 이라는 문자를 아스키코드로 간주하고 해석하는 문제
아스키가 아닌 UTF-8 으로 변경.
10. 유니코드 문자열 처리
10
유니코드 문자열 만들기
1) 문자열 앞에 u 를 붙이기
2) unicode()함수 이용
<type 'unicode'>
안성현
<type 'str'> => <type 'unicode'>
11. 유니코드와 인코딩에 대해서
11
<type 'str'> 에 대해서?
- 파이썬 실행환경에 설정 세팅에 따라서 변경된 문자열.
<type 'unicode'>
- 파이썬 실행환경과 상관없이 통일된 문자체계를 가지는 코드로 변환
STR UNICODE
decode
encode
UTF-8, CP949, ISO8859-1..
12. 유니코드 문자열 처리
12
s1 type : <type 'str'>
s2 type : <type 'str'>
s1 != s2
비교가 안되는 이유?
같은 str 형인데도 불구하고 인코딩이 다르게 되었다.
파이썬에서는 알수가 없다.
13. 유니코드 문자열 처리
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
14. codecs
14
유니코드 텍스트 I/O 에 사용되는 여러 문자 인코딩 처리
아스키 외의 다른 인코딩 파일 읽고 쓴다.
open() 함수에서 codecs 를 이용해서 인코딩을 지정하는것이 차이점!!
15. pickle
15
임의의 파이썬 객체를 저장하는 모듈, 절임이라는 의미
파이썬 객체(기본객체, 사용자 정의 클래스 인스턴스 등등)을 파일객체로 저장 및 로드
pickle 모듈 이용
파이썬 객체 파일
pickle.dump
pickle.load
22. 파일 및 디렉터리
22
디렉토리 생성 및 삭제
mkdir : 디렉토리 생성
maekdirs : 하위디렉토리까지 생성
rm : 디렉토리 삭제
removedirs : 상위 디렉토리까지 삭
제
rename : 이름 변경
23. 파일 및 디렉터리
23
파일 관련
shutil : 복사/이동/이름변경 전문 모듈
파일 복사 및 디렉토리 복사 한번에
★
24. 디렉터리내 검색
24
os.walk 이용
: 현재 디렉터리 부터 하위 디렉터리 까지 모두 검색
: 각 검색시 현재 검색디렉토리, 검색된 디렉토리, 검색된 파일들 순으로 출력
25. 디렉터리내 검색
25
특정 확장자의 파일만 골라내기
os.listdir 은 특정 디렉터리 하나에 있는 요소들을 반환한다.
os.chdir 해당 디렉토리로 이동하는 함수
glob 모듈 : dir, ls와 같은 명령어 역할, 현재디렉터리 기준으로 필터링 수행된 결과 반환
29. 압축 관련
29
tarfile : tar 아카이브 파일을 조작할때 사용
모드 설명
‘r’ 읽기 전용, 압축되어 있으면
알아서 압축해제한다.
‘r:’ 압축없이 읽기 전용
‘r:gz’ Gzip압축으로 읽기전용
‘r:bz2’ Bzip2 압축으로 읽기전용
‘a’, ‘a:’ 압축없이 추가용
‘w’, ‘w:’ 압축없이 쓰기용
‘w:gz’ Gzip압축으로 쓰기용
‘w:bz2’ Bzip2 압축으로 쓰기용
10kb
30. 압축 관련
30
압축을 하려면 a 모드가 아닌 w 로 열어야 한다.
177 byte
압축파일 안에있는 파일명 변경하기
31. 압축 관련
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