- C-style formatting - format() method
file = open(‘file.txt’, [mode]) ◦ Mode ‘r’: for reading (default) ‘w’: for writing (truncate if already exists) ‘a’: for appending ‘r+’: for reading and writing ‘w+’: for reading and writing (truncate if already exists) ‘b’: binary file ‘U’: universal newlines (‘\n’, ‘\r\n’, ‘\r’ 를 지원 ) all = file.read() line = file.readline() # return string ending with ‘\n’ line_list = file.readlines() # read all and return list of lines file.write(string) file.writelines(line_list) fd = file.fileno() # retrun integer file descritor
Computers are byte-oriented ◦ ASCII ◦ 영어를 제외한 대부분의 문자는 multi bytes 로 표현해야 한글 encoding 방식 ◦ EUC-KR: 2-byte 완성형, 2,350 자의 한글 표현 가능 ◦ MS 사의 CP949: 확장 완성형, 11,172 자의 한글 표현 가능 (sorting 에 문제 ) Unicode: 전세계 문자를 동시에 표현하는 단일 코드체계 ◦ 단지 유일하게 표현하는 ‘code point’ 일 뿐 전송 (transfer) 하거나 저장 /transfer 하기 위한 것은 아님 문자의 식별이나 sorting 등 컴퓨터내의 processing 에 이용 ◦ Unicode 의 encoding: UTF(Unicode Character Set Transformation Format) UTF-7, UTF-8, UTF-16, UTF-32 ASCII 와 호환 가능한 UTF-8 encoding 이 가장 널리 쓰임
한글의 저장 방식 ◦ UTF-8: WWW, , UNIX/Linux, 웹서버, PHP, DB 등에서 이용 영문자는 ASCII 그대로 1 byte 로, 다국어는 2, 3, 4 bytes 로 표현 한글인 경우 3 bytes 로 encoding – 초성, 중성, 종성 ◦ CP949: MS Windows Conversion unicode utf-8 cp949 s.decode(‘cp949’)s.decode(‘utf-8’) u.encode(‘cp949’) u.encode(‘utf-8’)
한글이 있는 source 파일은 encoding 지정해야 ◦ UTF-8 로 지정함이 바람직 (Eclipse 도 UTF-8 로 하자.) String ◦ Python 2: 8-bit ASCII ◦ Python 3: unicode 한글 다루기 쉽다. File sysem encoding ◦ Python 2: byte 열로 봐서 그대로 write/read 필요하면 개발자가 바꿔야 string.decode(‘cp949’).encode(‘utf-8’) # cp949 utf-8 ◦ Python 3: OS 에 따라 자동 encoding utf-8 encoding on Linux/UNIX/MAC cp949 encoding on Windows Open 할 때 encoding 을 변경 지정 가능 터미널 (stdin, stdout, stderr) encoding ◦ OS 에 따라 자동 encoding
Source encoding 을 utf-8 으로 하자. ( 한글이 source code 에 적힌 경우는 반드시 ) Python 3 쓰면 혼선이 없다. Python 2 에서는 ? ◦ Windows 환경에서 Eclipse 는 문제 없다. SVN 사용해서 Linux 에 변경없이 사용 가능 IDLE 은 다음 경우에 쓰자 한글없는 경우나 한글이 있는 stand-alone 으로 실행하는 프로그램 (cp949 로 ) ◦ Linux 환경에서 Utf-8 를 쓰니 별 문제 없다. ◦ 한글이 포함되는 string 이라면 unicode 로 decode 해서 처리하게 코드를 작성해야 모든 환경에 문제없다. Socket 통신에서 utf-8 로 encoding 하자.