SlideShare a Scribd company logo
1 of 36
Download to read offline
안성현(@SH84AHN)
파일처리 및 문자열 처리
입출력, 문자열처리, 유니코드
1
오늘 다룰 것들.
2
텍스트 I/O
pickle
glob
파일 및 디렉터리
디렉터리 내 검색
파일 압축
유니코드 문자열 처리
with 문 명령줄 옵션 처리
codecs
텍스트 파일 읽고 쓰기
3
 기본적인 파일 읽고 쓰기의 방식
1) open 함수로 파일모드에 따라서 파일 연다.
2) 쓰기 혹은 읽기 수행
3) 파일 닫기
read(size) : size 만큼 읽어온다. 생략하면 전체
텍스트 파일 읽고 쓰기
4
 줄단위로 쓰고 읽기, writelines(), readlines()
 writelines 함수에서 list 자체를 입력하면, 한줄로 연결된 텍스트로 들어간다.
 readlines 함수를 개행으로 구분된 줄단위를 list() 형태로 가져온다.
텍스트 파일 읽고 쓰기
5
 readlines() 함수 사용시 파일내 모든 텍스트를 줄단위로 끊어서 list()로 반환
 readline() 함수는 한줄씩 가져오는 역할을 함.
with 문
6
컨텍스트 관리자?
예외가 발생한 경우, 파일, 락, 연결 등의 시스템 자원을 적절하게 관리해주는 역할
with 문을 빠져나오면 자동으로 파일이 닫힌다.
C#의 using 문
기타함수
7
임의 접근 , seek(n) n 만큼 이동
012345
python
닫혔는지 확인, closed
유니코드 문자열 처리
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
일반 문자열을 유니코드로 변환을 하면.. 문제가 생김
UnicodeDecodeError: 'ascii' codec can't decode byte 0xed in position 0:
ordinal not in range(128)
‘한글’ 이라는 문자를 아스키코드로 간주하고 해석하는 문제
아스키가 아닌 UTF-8 으로 변경.
유니코드 문자열 처리
10
유니코드 문자열 만들기
1) 문자열 앞에 u 를 붙이기
2) unicode()함수 이용
<type 'unicode'>
안성현
<type 'str'> => <type 'unicode'>
유니코드와 인코딩에 대해서
11
<type 'str'> 에 대해서?
- 파이썬 실행환경에 설정 세팅에 따라서 변경된 문자열.
<type 'unicode'>
- 파이썬 실행환경과 상관없이 통일된 문자체계를 가지는 코드로 변환
STR UNICODE
decode
encode
UTF-8, CP949, ISO8859-1..
유니코드 문자열 처리
12
s1 type : <type 'str'>
s2 type : <type 'str'>
s1 != s2
비교가 안되는 이유?
같은 str 형인데도 불구하고 인코딩이 다르게 되었다.
파이썬에서는 알수가 없다.
유니코드 문자열 처리
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
codecs
14
유니코드 텍스트 I/O 에 사용되는 여러 문자 인코딩 처리
아스키 외의 다른 인코딩 파일 읽고 쓴다.
open() 함수에서 codecs 를 이용해서 인코딩을 지정하는것이 차이점!!
pickle
15
임의의 파이썬 객체를 저장하는 모듈, 절임이라는 의미
파이썬 객체(기본객체, 사용자 정의 클래스 인스턴스 등등)을 파일객체로 저장 및 로드
pickle 모듈 이용
파이썬 객체 파일
pickle.dump
pickle.load
pickle
16
dump 사용법
pickle.dump(출력할 객체, 파일객체)
pickle
17
test.pickle
pickle
18
load 사용법
object = pickle.load(파일객체)
특정 저장시점에 인스턴스를 파일에 특정한 자료구조에 넣고 빼고 할 필요 없이
바로 dump를 통해서 인스턴스 자체를 저장하고 load 를 통해서 불러올수 있다는 장점!!
파일 및 디렉터리
19
path 관련 작업
commonprefix : 주어진 리스트내 path 들에서 같은 부분을 찾아서 반환
파일 및 디렉터리
20
getatime : 접근시간 확인, 초 단위 (1970년 1월 1일 이후)
getctime : 생성시간 확인
getmtime : 변경시간 확인
파일 및 디렉터리
21
normcase, normpath : 현재 운영체제에 맞는 형식으로 변경
★
★
파일 및 디렉터리
22
디렉토리 생성 및 삭제
mkdir : 디렉토리 생성
maekdirs : 하위디렉토리까지 생성
rm : 디렉토리 삭제
removedirs : 상위 디렉토리까지 삭
제
rename : 이름 변경
파일 및 디렉터리
23
파일 관련
shutil : 복사/이동/이름변경 전문 모듈
파일 복사 및 디렉토리 복사 한번에
★
디렉터리내 검색
24
os.walk 이용
: 현재 디렉터리 부터 하위 디렉터리 까지 모두 검색
: 각 검색시 현재 검색디렉토리, 검색된 디렉토리, 검색된 파일들 순으로 출력
디렉터리내 검색
25
특정 확장자의 파일만 골라내기
 os.listdir 은 특정 디렉터리 하나에 있는 요소들을 반환한다.
 os.chdir 해당 디렉토리로 이동하는 함수
 glob 모듈 : dir, ls와 같은 명령어 역할, 현재디렉터리 기준으로 필터링 수행된 결과 반환
디렉터리내 검색
26
glob 모듈, iglob는 결과 대신에 이터레이터를 반환
압축 관련
27
gzip : GNU 프로그램의 gnuzip, gzip 압축관련 모듈
- 데이터를 file.txt 에 추가하고, 해당 파일을 압축한다.
압축하기
압축 관련
28
파일모드만 주의하자.
gzip 압축풀기
이미 있는 파일 압축하기, 다 꺼내서 할 필요 없이 파일객체를 전달하자.
압축 관련
29
tarfile : tar 아카이브 파일을 조작할때 사용
모드 설명
‘r’ 읽기 전용, 압축되어 있으면
알아서 압축해제한다.
‘r:’ 압축없이 읽기 전용
‘r:gz’ Gzip압축으로 읽기전용
‘r:bz2’ Bzip2 압축으로 읽기전용
‘a’, ‘a:’ 압축없이 추가용
‘w’, ‘w:’ 압축없이 쓰기용
‘w:gz’ Gzip압축으로 쓰기용
‘w:bz2’ Bzip2 압축으로 쓰기용
10kb
압축 관련
30
압축을 하려면 a 모드가 아닌 w 로 열어야 한다.
177 byte
압축파일 안에있는 파일명 변경하기
압축 관련
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
압축 관련
32
압축 몽땅 풀기, extractall(dir_path)
특정 파일 압축 풀기
명령줄 옵션 읽기
33
> python study.py -f 'setup.py' -c 'conf.ini'
['study.py', '-f', "'setup.py'", '-c', "'conf.ini'"]
 sys.argv 리스트에 명령줄 옵션이 들어있다.
명령줄을 통해서 conf 파일이나 옵션 지정시
내부에서 첫번째 해줘야하는 일들..
이런 삽질..
명령줄 옵션 읽기
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}
[]
파싱할 인자,
받을 변수,
받을 변수의 타입을 적어준다.
명령줄 옵션 읽기
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 로 대체
정리
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 사용. 삽질금지

More Related Content

What's hot

Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10hungrok
 
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보Young Hoo Kim
 
제로부터시작하는Git
제로부터시작하는Git제로부터시작하는Git
제로부터시작하는GitMario Cho
 
2장 리눅스의 기초
2장 리눅스의 기초2장 리눅스의 기초
2장 리눅스의 기초Young Jin Suh
 
구글분산
구글분산구글분산
구글분산imscott
 
git, git flow
git, git flowgit, git flow
git, git floweva
 
Reduce testing time by Multiprocessing in python
Reduce testing time by Multiprocessing in pythonReduce testing time by Multiprocessing in python
Reduce testing time by Multiprocessing in pythonSangJune Ahn
 
파일시스템 관련 명령어
파일시스템 관련 명령어파일시스템 관련 명령어
파일시스템 관련 명령어Chulgyu Shin
 
고급시스템프로그래밍
고급시스템프로그래밍고급시스템프로그래밍
고급시스템프로그래밍Seungbeom Shim
 
[IoT] MAKE with Open H/W + Node.JS - 2nd
[IoT] MAKE with Open H/W + Node.JS - 2nd[IoT] MAKE with Open H/W + Node.JS - 2nd
[IoT] MAKE with Open H/W + Node.JS - 2ndPark Jonggun
 
이것이 리눅스다
이것이 리눅스다이것이 리눅스다
이것이 리눅스다Yeon Tae Kim
 
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은jieun kim
 
File merging Report
File merging ReportFile merging Report
File merging ReportKwonhong Min
 
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)Ubuntu Korea Community
 
H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요KTH
 

What's hot (20)

Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10
 
Git
GitGit
Git
 
Race condition
Race conditionRace condition
Race condition
 
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
 
제로부터시작하는Git
제로부터시작하는Git제로부터시작하는Git
제로부터시작하는Git
 
2장 리눅스의 기초
2장 리눅스의 기초2장 리눅스의 기초
2장 리눅스의 기초
 
1.intro to k8s
1.intro to k8s1.intro to k8s
1.intro to k8s
 
구글분산
구글분산구글분산
구글분산
 
git, git flow
git, git flowgit, git flow
git, git flow
 
Reduce testing time by Multiprocessing in python
Reduce testing time by Multiprocessing in pythonReduce testing time by Multiprocessing in python
Reduce testing time by Multiprocessing in python
 
파일시스템 관련 명령어
파일시스템 관련 명령어파일시스템 관련 명령어
파일시스템 관련 명령어
 
고급시스템프로그래밍
고급시스템프로그래밍고급시스템프로그래밍
고급시스템프로그래밍
 
Mongodb tip42 50
Mongodb tip42 50Mongodb tip42 50
Mongodb tip42 50
 
[IoT] MAKE with Open H/W + Node.JS - 2nd
[IoT] MAKE with Open H/W + Node.JS - 2nd[IoT] MAKE with Open H/W + Node.JS - 2nd
[IoT] MAKE with Open H/W + Node.JS - 2nd
 
System+os study 6
System+os study 6System+os study 6
System+os study 6
 
이것이 리눅스다
이것이 리눅스다이것이 리눅스다
이것이 리눅스다
 
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
 
File merging Report
File merging ReportFile merging Report
File merging Report
 
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
 
H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요
 

Similar to 파이썬 파일처리 및 문자열 처리

파이썬 파일처리 이해하기
파이썬 파일처리 이해하기파이썬 파일처리 이해하기
파이썬 파일처리 이해하기Yong Joon Moon
 
Git의 개념과 사용
Git의 개념과 사용Git의 개념과 사용
Git의 개념과 사용환민 홍
 
Linux programming study
Linux programming studyLinux programming study
Linux programming studyYunseok Lee
 
Ch.14 파일 강c v0.6
Ch.14 파일 강c v0.6Ch.14 파일 강c v0.6
Ch.14 파일 강c v0.6승태 김
 
[강릉원주대 대기환경과학과] 대기과학전산입문 설명서
[강릉원주대 대기환경과학과] 대기과학전산입문 설명서[강릉원주대 대기환경과학과] 대기과학전산입문 설명서
[강릉원주대 대기환경과학과] 대기과학전산입문 설명서Lee Sang-Ho
 
Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)정명훈 Jerry Jeong
 
파이썬 병렬프로그래밍
파이썬 병렬프로그래밍파이썬 병렬프로그래밍
파이썬 병렬프로그래밍Yong Joon Moon
 
programming with GDB
programming with GDBprogramming with GDB
programming with GDBNakCheon Jung
 
도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편Sam Kim
 
리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리Seungyong Lee
 
스프링 부트와 로깅
스프링 부트와 로깅스프링 부트와 로깅
스프링 부트와 로깅Keesun Baik
 
Linux reversing study_basic_3
Linux reversing study_basic_3Linux reversing study_basic_3
Linux reversing study_basic_3Jinkyoung Kim
 
명세부터 깨우치는 FILEAPI
명세부터 깨우치는 FILEAPI명세부터 깨우치는 FILEAPI
명세부터 깨우치는 FILEAPI우영 주
 

Similar to 파이썬 파일처리 및 문자열 처리 (20)

파이썬 파일처리 이해하기
파이썬 파일처리 이해하기파이썬 파일처리 이해하기
파이썬 파일처리 이해하기
 
Git의 개념과 사용
Git의 개념과 사용Git의 개념과 사용
Git의 개념과 사용
 
Linux programming study
Linux programming studyLinux programming study
Linux programming study
 
System+os study 4
System+os study 4System+os study 4
System+os study 4
 
Ch.14 파일 강c v0.6
Ch.14 파일 강c v0.6Ch.14 파일 강c v0.6
Ch.14 파일 강c v0.6
 
linux1
linux1linux1
linux1
 
[강릉원주대 대기환경과학과] 대기과학전산입문 설명서
[강릉원주대 대기환경과학과] 대기과학전산입문 설명서[강릉원주대 대기환경과학과] 대기과학전산입문 설명서
[강릉원주대 대기환경과학과] 대기과학전산입문 설명서
 
shell and process
shell and processshell and process
shell and process
 
JetsonTX2 Python
 JetsonTX2 Python  JetsonTX2 Python
JetsonTX2 Python
 
Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)
 
파이썬 병렬프로그래밍
파이썬 병렬프로그래밍파이썬 병렬프로그래밍
파이썬 병렬프로그래밍
 
programming with GDB
programming with GDBprogramming with GDB
programming with GDB
 
도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편
 
리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리
 
스프링 부트와 로깅
스프링 부트와 로깅스프링 부트와 로깅
스프링 부트와 로깅
 
Endnote X4 @ postech
Endnote X4 @ postechEndnote X4 @ postech
Endnote X4 @ postech
 
파이선 실전공략-1
파이선 실전공략-1파이선 실전공략-1
파이선 실전공략-1
 
Linux reversing study_basic_3
Linux reversing study_basic_3Linux reversing study_basic_3
Linux reversing study_basic_3
 
명세부터 깨우치는 FILEAPI
명세부터 깨우치는 FILEAPI명세부터 깨우치는 FILEAPI
명세부터 깨우치는 FILEAPI
 
Git
Git Git
Git
 

More from SeongHyun Ahn

MQTT 를 이용한 주문시스템 개선
MQTT 를 이용한 주문시스템 개선 MQTT 를 이용한 주문시스템 개선
MQTT 를 이용한 주문시스템 개선 SeongHyun Ahn
 
github : 유용한 기능들
github : 유용한 기능들 github : 유용한 기능들
github : 유용한 기능들 SeongHyun Ahn
 
카피캣으로 시작하는 오픈소스
카피캣으로 시작하는 오픈소스 카피캣으로 시작하는 오픈소스
카피캣으로 시작하는 오픈소스 SeongHyun Ahn
 
파이썬 웹프로그래밍 1탄
파이썬 웹프로그래밍 1탄 파이썬 웹프로그래밍 1탄
파이썬 웹프로그래밍 1탄 SeongHyun Ahn
 
파이썬 기본 문법
파이썬 기본 문법파이썬 기본 문법
파이썬 기본 문법SeongHyun Ahn
 
파이썬 모듈 패키지
파이썬 모듈 패키지파이썬 모듈 패키지
파이썬 모듈 패키지SeongHyun Ahn
 
파이썬 데이터베이스 연결 1탄
파이썬 데이터베이스 연결 1탄파이썬 데이터베이스 연결 1탄
파이썬 데이터베이스 연결 1탄SeongHyun Ahn
 
파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 SeongHyun Ahn
 
파이썬 데이터베이스 연결 2탄
파이썬 데이터베이스 연결 2탄파이썬 데이터베이스 연결 2탄
파이썬 데이터베이스 연결 2탄SeongHyun Ahn
 
파이썬 유용한 라이브러리
파이썬 유용한 라이브러리파이썬 유용한 라이브러리
파이썬 유용한 라이브러리SeongHyun Ahn
 
실용주의 머신러닝 CNN MNIST TENSORBOARD
실용주의 머신러닝 CNN MNIST TENSORBOARD실용주의 머신러닝 CNN MNIST TENSORBOARD
실용주의 머신러닝 CNN MNIST TENSORBOARDSeongHyun Ahn
 
Pycon APAC 2016 후기
Pycon APAC 2016 후기Pycon APAC 2016 후기
Pycon APAC 2016 후기SeongHyun Ahn
 
Introduction of scrum 안성현 20120606
Introduction of scrum 안성현 20120606Introduction of scrum 안성현 20120606
Introduction of scrum 안성현 20120606SeongHyun Ahn
 
디자인 패턴 데코레이터 패턴
디자인 패턴 데코레이터 패턴디자인 패턴 데코레이터 패턴
디자인 패턴 데코레이터 패턴SeongHyun Ahn
 
파이썬 스터디 15장
파이썬 스터디 15장파이썬 스터디 15장
파이썬 스터디 15장SeongHyun Ahn
 
파이썬 스터디 9장
파이썬 스터디 9장파이썬 스터디 9장
파이썬 스터디 9장SeongHyun Ahn
 
빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)SeongHyun Ahn
 

More from SeongHyun Ahn (18)

MQTT 를 이용한 주문시스템 개선
MQTT 를 이용한 주문시스템 개선 MQTT 를 이용한 주문시스템 개선
MQTT 를 이용한 주문시스템 개선
 
github : 유용한 기능들
github : 유용한 기능들 github : 유용한 기능들
github : 유용한 기능들
 
카피캣으로 시작하는 오픈소스
카피캣으로 시작하는 오픈소스 카피캣으로 시작하는 오픈소스
카피캣으로 시작하는 오픈소스
 
파이썬 웹프로그래밍 1탄
파이썬 웹프로그래밍 1탄 파이썬 웹프로그래밍 1탄
파이썬 웹프로그래밍 1탄
 
파이썬 기본 문법
파이썬 기본 문법파이썬 기본 문법
파이썬 기본 문법
 
파이썬 모듈 패키지
파이썬 모듈 패키지파이썬 모듈 패키지
파이썬 모듈 패키지
 
파이썬 데이터베이스 연결 1탄
파이썬 데이터베이스 연결 1탄파이썬 데이터베이스 연결 1탄
파이썬 데이터베이스 연결 1탄
 
파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄
 
파이썬 데이터베이스 연결 2탄
파이썬 데이터베이스 연결 2탄파이썬 데이터베이스 연결 2탄
파이썬 데이터베이스 연결 2탄
 
파이썬 유용한 라이브러리
파이썬 유용한 라이브러리파이썬 유용한 라이브러리
파이썬 유용한 라이브러리
 
파이썬 소개
파이썬 소개 파이썬 소개
파이썬 소개
 
실용주의 머신러닝 CNN MNIST TENSORBOARD
실용주의 머신러닝 CNN MNIST TENSORBOARD실용주의 머신러닝 CNN MNIST TENSORBOARD
실용주의 머신러닝 CNN MNIST TENSORBOARD
 
Pycon APAC 2016 후기
Pycon APAC 2016 후기Pycon APAC 2016 후기
Pycon APAC 2016 후기
 
Introduction of scrum 안성현 20120606
Introduction of scrum 안성현 20120606Introduction of scrum 안성현 20120606
Introduction of scrum 안성현 20120606
 
디자인 패턴 데코레이터 패턴
디자인 패턴 데코레이터 패턴디자인 패턴 데코레이터 패턴
디자인 패턴 데코레이터 패턴
 
파이썬 스터디 15장
파이썬 스터디 15장파이썬 스터디 15장
파이썬 스터디 15장
 
파이썬 스터디 9장
파이썬 스터디 9장파이썬 스터디 9장
파이썬 스터디 9장
 
빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)
 

파이썬 파일처리 및 문자열 처리

  • 1. 안성현(@SH84AHN) 파일처리 및 문자열 처리 입출력, 문자열처리, 유니코드 1
  • 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
  • 18. pickle 18 load 사용법 object = pickle.load(파일객체) 특정 저장시점에 인스턴스를 파일에 특정한 자료구조에 넣고 빼고 할 필요 없이 바로 dump를 통해서 인스턴스 자체를 저장하고 load 를 통해서 불러올수 있다는 장점!!
  • 19. 파일 및 디렉터리 19 path 관련 작업 commonprefix : 주어진 리스트내 path 들에서 같은 부분을 찾아서 반환
  • 20. 파일 및 디렉터리 20 getatime : 접근시간 확인, 초 단위 (1970년 1월 1일 이후) getctime : 생성시간 확인 getmtime : 변경시간 확인
  • 21. 파일 및 디렉터리 21 normcase, normpath : 현재 운영체제에 맞는 형식으로 변경 ★ ★
  • 22. 파일 및 디렉터리 22 디렉토리 생성 및 삭제 mkdir : 디렉토리 생성 maekdirs : 하위디렉토리까지 생성 rm : 디렉토리 삭제 removedirs : 상위 디렉토리까지 삭 제 rename : 이름 변경
  • 23. 파일 및 디렉터리 23 파일 관련 shutil : 복사/이동/이름변경 전문 모듈 파일 복사 및 디렉토리 복사 한번에 ★
  • 24. 디렉터리내 검색 24 os.walk 이용 : 현재 디렉터리 부터 하위 디렉터리 까지 모두 검색 : 각 검색시 현재 검색디렉토리, 검색된 디렉토리, 검색된 파일들 순으로 출력
  • 25. 디렉터리내 검색 25 특정 확장자의 파일만 골라내기  os.listdir 은 특정 디렉터리 하나에 있는 요소들을 반환한다.  os.chdir 해당 디렉토리로 이동하는 함수  glob 모듈 : dir, ls와 같은 명령어 역할, 현재디렉터리 기준으로 필터링 수행된 결과 반환
  • 26. 디렉터리내 검색 26 glob 모듈, iglob는 결과 대신에 이터레이터를 반환
  • 27. 압축 관련 27 gzip : GNU 프로그램의 gnuzip, gzip 압축관련 모듈 - 데이터를 file.txt 에 추가하고, 해당 파일을 압축한다. 압축하기
  • 28. 압축 관련 28 파일모드만 주의하자. gzip 압축풀기 이미 있는 파일 압축하기, 다 꺼내서 할 필요 없이 파일객체를 전달하자.
  • 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
  • 32. 압축 관련 32 압축 몽땅 풀기, extractall(dir_path) 특정 파일 압축 풀기
  • 33. 명령줄 옵션 읽기 33 > python study.py -f 'setup.py' -c 'conf.ini' ['study.py', '-f', "'setup.py'", '-c', "'conf.ini'"]  sys.argv 리스트에 명령줄 옵션이 들어있다. 명령줄을 통해서 conf 파일이나 옵션 지정시 내부에서 첫번째 해줘야하는 일들.. 이런 삽질..
  • 34. 명령줄 옵션 읽기 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} [] 파싱할 인자, 받을 변수, 받을 변수의 타입을 적어준다.
  • 35. 명령줄 옵션 읽기 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 로 대체
  • 36. 정리 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 사용. 삽질금지