python學習第七天
阿新 • • 發佈:2019-03-26
展示 新建 中一 功能 數字 應用 nco 流程 編碼解碼
字符編碼
# 重點:什麽是字符編碼 人類能識別的是字符等高級標識符,電腦只能識別0,1組成的標識符,要完成人與機器之間的信息交流,一定需要一個媒介,進行兩種標識符的轉化(兩種標識符的對應關系) ''' CPU:將數據渲染給用戶,中央處理器 內存:臨時存放數據,斷電後消失 硬盤:永久存儲數據,斷電後還有 亂碼:存數據與讀數據采用的編碼表不一致 軟件打開文件讀取數據的流程: 1. 打開軟件 2. 往計算機發生一個打開文件的指令,來打開文件 3. 讀取數據渲染給用戶(存取編碼不一致:亂碼) python解釋器打開py文件 1. 打開軟件(python解釋器) 2. 往計算機發生一個打開文件的指令,來打開文件 3. 逐行解釋打開的文件內容(存取編碼不一致,無法正常解釋,崩潰),將執行結果展示給用戶 解釋失敗的原因: py2默認按ASCII來解釋文件內容 | py3默認按UTF-8來解釋文件內容 文件頭:# encoding: 編碼表 功能:告訴py解釋器按照什麽編碼來解釋文件內容 '''
了解
''' 編碼表: 人內識別的字符標識符 與 計算機能識別的01標識符 的對應關系 萬國編碼:Unicode utf-8 1. 采用的都是Unicode編碼表 2. Unicode以定長(2字節)存取數據 3. utf-8以變長(1-6字節)存取數據 編碼表的發展史 1. ascii(ASCII):字母、數字、英文符號與計算機01標識符的對應關系 思考:如何將128個字符用01完全標簽 二進制:11111111 => 255 => 1bytes(1字節) => 8個二進制位 2.中國:研究漢字與計算機01標識符的對應關系:gb2312 => GBK(***) => GB18030 日本:Shift_JIS 棒子:Euc-kr 3. 制造一個可以完成萬國字符與計算機01標識符的對應關系的編碼表 編碼表:unicode表 py2:ascii,沒有按萬國編碼,原因py2要誕生先有萬國編碼 py3: utf-8, 采用萬國編碼來解釋文本內容 '''
重點
'''
unicode與utf-8什麽關系
unicode:用2個字節來存儲漢字,用2個字節來存儲英文字母,占有空間較多,讀取效率極高
utf-8:用3-6個字節來存儲漢字,用1個字節來存儲英文字母,占有空間較少,讀取效率低
總結:內存都是按unicode存儲數據,硬盤和cpu采用utf-8來存取數據
unicode與utf-8采用的是一張unicode編碼表,utf-8是unicode編碼表體現方式,變長存儲數據
變長優點:(大量數據都是以英文存在,所以utf-8空間更小)傳輸速度更快
'''
編碼解碼
# 三種字符串 # unicode字符串,默認字符串 s1 = u'abc你好\n不好' print(s1) # 字節字符串 s2 = b'abc123\xb7\xb7' print(s2) # 原義字符串: 不對字符串內存做任何操作(eg:\n的轉化) s3 = r'abc你好\n不好' print(s3) # 原義字符串: 不對字符串內存做任何操作(eg:\n的轉化) # r'abc\nabc' => 'abc\nabc' # 重點(*****) # u'' 之間轉化 b'' # 編碼:u''.encode('utf-8') | bytes(u'', encode='utf-8') # 解碼:b''.decode('utf-8') | str(b'', encode='utf-8')
文件操作
'''
計算機中的文件:硬盤中一塊存儲空間(虛擬的文件)
文件操作:根據文件名來操作硬盤的那塊存儲空間,操作方式 讀read 寫write
'''
'''
1. 打開文件
# 變量名 = 文件空間
# 文件路徑 操作模式(讀|寫) 編碼
f = open('a.txt', 'r', encoding='utf-8')
2. 操作文件(讀:read() 寫:write())
# data = f.read(3) # 將所有內容讀取出來,如果設置讀取長度,按照規定長度讀取數據
# print(data)
3. 關閉文件 *****
'''
# 基礎讀
# 1、打開文件
# 變量名 = 文件空間
# 文件路徑 操作模式(讀|寫) 編碼
f = open('a.txt', 'r', encoding='utf-8')
# 2、操作文件
# data = f.read(3) # 將所有內容讀取出來,如果設置讀取長度,按照規定長度讀取數據
# print(data)
# 一次讀取一行
# line = f.readline()
# print(line)
# line = f.readline()
# print(line)
# 按行一次性全部讀出
# lines = f.readlines()
# print(lines)
# 逐步一行一行讀取
# l = []
# for line in f:
# # print(line)
# l.append(line)
# print(l)
s = set()
for line in f:
# print(line)
s.add(line)
print(s)
# 3、關閉文件
f.close() # 釋放操作系統對文件的持有,變量f還被應用程序持有
# 模式
'''
主模式:r:讀 | w:寫 | a:追加
從模式:b:按字節操作 | t:按字符操作 | +:可讀可寫
了解:x:異常寫 | U:被遺棄了
'''
# 基礎寫 write
# 文件不存在:會新建文件,再操作文件
# 文件存在:先清空文件,再操作文件
w = open('b.txt', 'w', encoding='utf-8')
w.write('456')
w.close()
python學習第七天