제 1 부 : 파이썬 연구 노트
====================
12. 객체 지속성
12.1. 플랫 파일
12.1.1. 텍스트 파일
- 텍스트 파일은 영속 객체들을 저장됩니다
- 파이썬을 같은 문을 실행할 때 수 있도록, 파이썬 표현식으로 건너 문자열 변환
- 예
1 # 文本文件存储持久化对象 2 3 점수 = [88,99,77,55 ] 4 5 데프 write_scores () : 6 연 상태 ( ' data_list.txt ' , ' w ' 인코딩 = " UTF- ' )로서 F : 7 f.write (STR (점수)) 8 인쇄 ( ' 완료 파일 쓰기 ... ' ) (9) (10) 데프 read_scores () : 11 열고 (와 ' data_list.txt ' , ' R' , 인코딩 = ' UTF8 ' F AS) : (12)는 LST = 평가 후면 (도달, f.read ()) # 파이썬 표현식으로 문자열을 통해 패스, 파이썬으로 동일한 문을 실행할 수 있도록 (13)가 14 LST [0] 99 = (15) 이 전단 (LST) 16 (17). IF __name__ == ' __main__ ' : 18 인 #의 이 본 발 write_scores () # 먼저 실행 파일 작성 data_list.txt 19. read_scores ()를
12.2.pickle
12.2.1.pickle 모듈
- 직렬화 된 비트 스트링
- .dumps는 (OBJ) 문자열로 표적 서열
- .loads (들) : 모발 문자열 변환 표적 서열
- 예
(1 개) 수입 피클 이 사람 = { ' 이름 ' : ' 톰 ' , ' 나이 ' : 20 } 3 의의 =의 pickle.dumps (사람) 4 개 의
실행 결과 : B '\ X80 \ X03} Q의 \의 x00에서 (X \ X04 \ x00에서 \ x00부터 \ x00nameq \ x01X \ X03 \ x00에서 \ x00부터 \ x00Tomq \ x02X \ X03 \ x00에서 \ x00부터 \ x00ageq \ x03K \ x14u.'
1 p = pickle.loads은 2 쪽
실행 결과 : { '이름': '톰', '나이': 20}
- 파일에 직렬화 된 객체
- .dump (OBJ, 파일)
- .load (파일)
- 예
한 사람 = { ' 이름 ' : ' 톰 ' , ' 나이 ' : 20 } 2 pickle.dump (사람, 개방 ( ' pickle.db ' , ' WB ' )) 3 P = pickle.load (오픈 ( ' 피클. DB ' , ' RB ' )) 4 (P)
실행 결과 : 아웃 [14] : { '이름': '톰', '나이': 20}
12.3.shelve
12.3.1.shelve
문서의 여러 개체의 존재
- .open ( 'dbfile')
- .닫기()
- DB [ '키'= OBJ
- LEN (dB)
- 델 DB [ '키']
- 예
. (1) #가 직렬화 정의 클래스를 예 선반 (2) (3). 오기 선반 4. 5. 클래스 학생 : . 6 DEF __init__ (자기 이름, 나이) . 7 self.name = 이름 . 8 self.age = 나이 . 9 (10) . 11 DEF의 __str__ (자기) (12)이 복귀 self.name 13 인 14 DEF의 write_shelve () 15 S = 학생 ( ' 톰 ' , 20이다 ) 16 DB shelve.open = ( 'shelve_student_db ' ) 17 데시벨 [ ' S ' = S 18 db.close () 19 20 DEF (read_shelve) : 21 dB = shelve.open ( ' shelve_student_db ' ) 22 번째의 DB = [ ' S ' ] 23 인쇄 (일) 24 인쇄 (st.name) 25 인쇄 (st.age) 26 db.close () 27 28 29 경우 __name__ == ' __main__' : 30 #의 . write_shelve ()을 shelve_student_db 있도록 # 먼저이 실행 * 파일을 만들 수 있습니다 (31) read_shelve을 ()
12.4. 데이터베이스
12.5.ORM
13. 문자열
13.1. 개요
13.1.1 유형
- STR 문자열
- 바이트 바이트
- 바이트 배열 된 ByteArray
13.1.2. 문자 인코딩 아키텍처
- 문자 집합 : 메모리에 표현하는 문자 코드를 할당
- 인코딩 인코딩 : 원래 바이트 형태로 변환 문자
- 디코딩 디코딩은 : 원시 바이트 변환 부호화 이름 공정의 특성에 기초
- 문자 인코딩 아키텍처 다이어그램 :
13.1.3. 문자열이 저장된다
- 인코딩 파일 만 저장 매체 또는 중간 변환에 작용
- 항상 디코딩 된 텍스트 후 메모리에 저장
13.2. 문자 인코딩
13.2.1.ASCII
- BYTE 형 127에 저장된
- BYTE 형 128-255에 저장
- 변수 바이트
13.2.2.latin-1
13.2.3.UTF-8
• 127 단일 바이트
• 128-2047 더블 바이트 저장
•> 2047 3-4 바이트
• 128-255 당 바이트를 사용하여
13.2.4.UTF 16
- 2 바이트의 저장 문자 (식별 플러스 2 바이트)
- 4 바이트
13.2.5.UTF-32
13.3. 내장 함수
13.3.1.ord ()는 문자 코드 포인트를 가져옵니다
13.3.2.chr ()는 점에 대응하는 문자 코드를 취득
13.3.3.str.encode 특정 문자 인코딩 ( "코딩")
13.3.4.bytes.decode 문자 부호화 및 복호화 텍스트 문자 ( "코딩")
13.3.5.encode 디코드 예
. (1) S1 = ' ABCD ' 2 s1.encode ( ' 아스키 ' ) . 3 . 4 S2 = ' Youpin 클래스 ' . 5 s2.encode ( " UTF-. 8 ' ) . 6 . 7 B1 = B ' \ XE4 \ XBC \ X98 \ xe5 \ X93 \ X81 \ xe8 \ XAF \ XBE \ xe5 XA0 \ X82 \ " . 8 . 9 b1.decode ( " UTF-8. ' ->) ' 우수한 제품 클래스 ' 10 b1.decode ( " UTF-16 " ) -> 왜곡 참조
- 참고 : 인코딩 및 디코딩은 기본 인코딩은 UTF-8입니다
1 임포트 SYS 2 sys.getdefaultencoding () 3 (4) -> UTF-8
문서 형 부호화 처리시 13.3.6. 예를 공식화
1 오픈 ( ' data.txt로 ' , ' w ' 인코딩 = " UTF-8 " )에 .write ( ' 优品课堂' ) 2 오픈 ( ' data.txt로 ' , ' R ' , 인코딩 = " UTF-8 " ).독서()
13.4 형 변환
13.4.1.bytes
- 수동 규격 B ''
- 문자열 코드 str.encode ()
- 생성자 바이트 ()
- 그것은 현장의 변경을 지원하지 않습니다
13.4.2.bytearray
- 이 ByteArray ( '문자', '코딩')
- .decode ()는 문자열을 디코딩
- 지원 현장 변화