字元編碼和檔案

2021-08-28 06:47:20 字數 3054 閱讀 6547

儲備知識點:

1.計算機系統分為三層:

應用程式

作業系統

計算機硬體

2.執行python程式的三個步驟

1.先啟動python直譯器

2.再將python檔案當作普通的文字檔案讀入記憶體

3.解釋執行讀入記憶體的**,開始識別語法

字元編碼:

1.什麼是字元編碼

字元編碼表:人類的字元<->數字

1bytes=8bit

1b=8b 1位元組等於8個二進位制bit(位元位)位表示乙個英文本元

ascⅱ碼 :只能識別英文本元,1英文本元=8bit

用8個二進位制bit(位元位)位表示乙個英文本元

gbk:能識別漢字與英文,1漢字=16bit,1英文本元=8bit

shift_jis 日本編碼

euc-kr 韓文編碼

unicode:能夠識別萬國字元,1字元=2bytes=16bit

兩大特點:

1.能夠相容萬國字元

2.與各個國家的字元編碼都有對映關係

utf-8:是unicode的轉換格式,1個英文本元=1bytes 1漢字=3bytes

重點理論:

1 編碼與解碼:

字元----編碼—>unicode的二進位制-----編碼------>gbk的二進位制

gbk的二進位制------解碼---->unicode的二進位制-------解碼–>字元

2、解決亂碼的核心法則:

字元用什麼編碼格式編碼的,就應該用什麼編碼格式進行解碼

3、python直譯器預設的字元編碼

python2:ascⅱ

python3:utf-8

通過檔案頭可以修改python直譯器預設使用的字元編碼

在檔案首行寫:#coding:檔案當初存的時候用的字元編碼

針對python2直譯器中定義字串應該:

x=u"上"

對於python3解釋即便是x="上"不加字首u也是存在unicode

在python3中

x=『上』#'上』存成了unicode

關於字元編碼的操作:

1.編寫python檔案,首行應該加檔案頭:#coding:檔案存時用的編碼

2.用python2寫程式,定義字串應該加字首u,如x='u』上

3.python3中的字串都是unicode編碼的,python3的字串encode之後可以得到bytes型別

2. 為何字元要編碼

人類與計算機打交道用的都是人類的字元,而計算機無法識別人類的字元,只能識別二進位制,所以必須將人類的字元編碼成計算機能識別的二進位制數字

3如何用字元編碼

#coding:utf-8

『』』1 什麼是檔案

檔案是作業系統提供給使用者/應用程式的一種虛擬單位,該虛擬單位直接對映的是硬碟空間

2 為何要處理檔案

使用者/應用程式直接操作檔案(讀/寫)就被作業系統轉換成具體的硬碟操作,從而實現

使用者/應用程式將記憶體中的資料永久儲存到硬碟中

3 如何用檔案

『』』檔案處理的三個步驟

f=open(r』c.txt』,mode=『r』,encoding=『utf-8』) # 檔案物件(應用程式的記憶體資源)------》作業系統開啟的檔案(作業系統的記憶體資源)

print(f)

data=f.read()

f.close() # 向作業系統傳送訊號,讓作業系統關閉開啟的檔案,從而**作業系統的資源

上下文管理

with open(r'c.txt',mode='r',encoding='utf-8') as f,open(r'b.txt',mode='r',encoding='utf-8') as f1:

讀寫檔案的操作

pass

檔案的開啟模式:r(預設的) w a

操作檔案內容的模式:

t(預設的):操作檔案內容都是以字串為單位,會自動幫我們解碼,必須指定encoding引數

b: 操作檔案內容都是以bytes(二進位制)為單位,硬碟中存的時什麼就取出什麼,一定不能指定encoding引數

總結:t模式只能用於檔案本檔案,而b模式可以用於任意檔案

r模式:唯讀模式,在檔案不存在時則報錯,如果檔案存在檔案指標跳到檔案的開頭

with open(r'c.txt',mode='rt',encoding='utf-8') as f:

print(f.read())

print(f.readable())

print(f.writable())

f.write('hello') # 只能讀

data=f.read()

print(data,type(data))

with open(r'c.txt',mode='rb') as f:

data=f.read()

# print(data,type(data))

res=data.decode('utf-8')

print(res)

with open(r'c.txt',mode='rt',encoding='utf-8') as f:

line=f.readline()

print(line,end='')

line1=f.readline()

print(line1,end='')

line2 = f.readline()

print(line2,end='')

lines=f.readlines()

print(lines)

with open(r'c.txt',mode='rt',encoding='utf-8') as f:

line=f.readline()

print(line,end='')

迴圈讀檔案內容的方法:

with open(r'c.txt',mode='rt',encoding='utf-8') as f:

for line in f:

print(line,end='')

字元編碼和檔案處理

檔案處理 應用程式任何操作硬體的請求都需要向作業系統發起系統呼叫,然後由操作做系統去操作硬體 1.開啟了編輯器就開啟了啟動了乙個程序,是在記憶體中的,所以,用編 輯器編寫的內容也都是存放與記憶體中的,斷電後資料丟失。2.要想永久儲存,需要點選儲存按鈕 編輯器把記憶體的資料刷到了硬碟 上。3.在我們編...

python字元編碼和檔案處理

一.了解字元編碼的知識儲備 1.文字編輯器訪問檔案的原理 nodepad python,word 2.python直譯器執行py檔案的原理,python,test.py 3.過程 文字編輯器 乙個檔案的三個過程 cpython直譯器執行乙個py檔案的三個過程 4.字元編碼 字元編碼指的是字元轉換成或...

python 編碼和檔案操作

在這裡插入 片 toc 編碼相關知識 encode 編碼函式 decode 解碼函式 in 77 s i am hhh in 79 s.encode out 79 b i am hhh in 80 s b i am hhh in 81 s.decode out 81 i am hhh file.re...