パート1:Pythonの研究ノート
====================
12.オブジェクトの永続性
12.1。フラットファイル
12.1.1。テキストファイル
- テキストファイルは永続オブジェクトを格納しています
- あなたは、Pythonを同じ文を実行したときにできるように、あなたはPythonの式に渡す文字列を変換します
- 例
1 #文本文件存储持久化对象 2 3スコア= [88,99,77,55 ] 4 5 デフwrite_scores(): 6 オープンと(' data_list.txt '、' W '、エンコード= ' UTF8 ' )Fとして: 7 f.write(STR(スコア)) 8 プリント(' 完了ファイル書き込み...... ' ) 9 10 DEF read_scores(): 11 オープン(と' data_list.txt '、' R'エンコード= ' UTF-8 " F AS): 12は LST =のeval(達し、f.read()) #Pythonの式に文字列の上にパスは、Pythonと同じ文を実行できるように、 13で 14 LST [0] = 99 15 印刷(LST) 16 17。 IF __name__ == ' __main__ ' : 18である #1 write_scores()#まずRUNこれまで作成し、ファイルをdata_list.txt 19。 read_scores()
12.2.pickle
12.2.1.pickleモジュール
- 直列化されたビット列
- .dumps(OBJ):標的配列文字列に
- .loads(S):髪の文字列変換標的配列
- 例
1つの インポートピクルス 2人= { ' 名前':' トム'、' 年齢':20 } 3のS =の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(S) 2 P
実行結果:{ '名前': 'トム'、 '年齢':20}
- ファイルにシリアライズされたオブジェクト
- .dump(OBJ、ファイル)
- .LOAD(ファイル)
- 例
1人= { ' 名前':' トム'、' 年齢':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')
- 。閉じる()
- デシベル[ 'キー'] = OBJ
- LEN(デシベル)
- デルデシベル[「キー」]
- 例
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 デシベル= shelve.open(' shelve_student_db ' ) 22 番目の=デシベル[ ' S ' ] 23 プリント(ST) 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
- バイト0〜127に保存されています
- バイト128から255に保存されています
- 可変バイト
13.2.2.latin-1
13.2.3.UTF-8
•0〜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(' ASCII ' ) 。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()は、文字列をデコードします
- その場での変更をサポートしています