1.程式執行與三大核心硬體的關係
程式最先都是存放於硬碟之中的
程式執行時是先把程式從硬碟中載入到記憶體中去
然後cpu從記憶體中讀取資料和指令執行
2.程式產生的資料最初都是存放於記憶體中
3.python程式執行的三個步驟:
如:python3 d:\a.py
① 先啟動python直譯器
② 直譯器將檔案a.py中的內容當成普通記憶體從硬碟載入到記憶體中(此時沒有語法意義)
③ 直譯器會解釋、執行剛剛讀入記憶體的內容,並識別python語法執行程式
字元-------(標準)---------數字
字元編碼表:存放字元與數字之間對應關係的表
1、ascii:只能識別英文本元
特點:採用8bit對應乙個英文本元,即乙個位元組(byte)
2、gbk:可以識別中文字元和英文本元
特點:採用16bit對應乙個字元(中英文都是16bit,即兩個位元組)
3、shift-jis:可以識別日文和英文本元
4、unicode:可以識別萬國字元
特點:採用兩個位元組對應乙個字元
字元-------->unicode格式的數字(對應著轉換成gbk、shift-jis、英文等所有的字元)
中文字元、英文本元---
----
----
-》unicode二進位制數---
----
----》gbk二進位制數
日文字元、英文本元---
----
----
-》unicode二進位制數---
----
----》shiftjis二進位制數
韓文本元、英文本元---
----
----
-》unicode二進位制數---
----
----》euc-kr二進位制數
萬國字元---
----
----
----
----
-》unicode二進位制數---
----
----》utf-
8二進位制數
5、utf-8
特點:
1byte對應乙個英文本元
3byte對應乙個中文字元
1、群雄割據
各國語言不統一,相互之間不相容
英文本元---
----
----
----記憶體:ascii二進位制數---
----
----
-->硬碟:ascii二進位制數
中文英文本元---
----
----
-記憶體:gbk二進位制數---
----
----
----
>硬碟:gbk二進位制數
日文英文本元---
----
----
-記憶體:shiftjis二進位制數---
----
--->硬碟:shiftjis二進位制數
韓文英文本元---
----
----
-記憶體:euc-kr二進位制數---
----
----
->硬碟:euc-kr二進位制數
2、過度階段
記憶體固定使用unicode格式,
人為可以改變由記憶體寫入硬碟的編碼格式
中文英文本元---
----
---記憶體:unicode
====
====gbk==
====
====
=>硬碟:gbk 二進位制數
日文英文本元---
----
---記憶體:unicode
====
====shif-jis==
====
>硬碟:shiftjis 二進位制數
韓文英文本元---
----
---記憶體:unicode
====
====euc-kr==
====
==>硬碟:euc-kr 二進位制數
萬國字元---
----
----
--記憶體:unicode
====
====utf-8==
*****==
>硬碟:utf-
8 二進位制數
3、分久必合
由於現階段部分舊的程式和資料仍然是用gbk、ascii等編碼格式儲存的,目前的記憶體都是unicode編碼格式,以便相容。
等過度階段成為歷史,記憶體預設的編碼格式將向utf-8轉變
萬國字元---
----
----
-記憶體:unicode
====
====
=utf-8==
====
====
==>硬碟:utf-
8二進位制數
萬國字元---
----
----
-記憶體:utf-8==
===無需轉碼直接寫入、讀取*****
>硬碟:utf-
8二進位制數
1、存的時候就已經亂了
採用的字元編碼表無法識別輸入的字元
存的時候就已經亂碼了,無法補救,取的時候解碼也會亂碼
解決方法:存入硬碟的編碼格式應該用utf-8格式
2、存的時候沒有亂
採用的字元編碼表可以識別輸入的字元
但是取的時候亂碼了:採用的字元編碼表與當初存的時候用的不是同一張表
解決方法:取的時候,解碼使用與存的時候一樣的編碼格式
即:
字元---
--編碼---
----
-》unicode格式的數字---
---編碼---
--》gbk格式的數字
字元----
-解碼---
----
-》unicode格式的數字《---
---解碼---
--gbk格式的數字
在檔案開頭加一行:
#coding:檔案存的時候的編碼格式
② 保證python執行第三個步驟不會亂碼:
使用python3(python3中字串型別的值都是以unicode格式的數字)
如果使用的是python2,在字串之前加字首 u
4.bytes
bytes型別可以理解為一種硬碟的原生格式
x =
'好'res1 = x.encode(
'gbk'
)res2 = x.encode(
'utf-8'
)print
(res1)
# b'\xba\xc3'
print
(res2)
# b'\xe5\xa5\xbd'
data1 = res1.decode(
'gbk'
)data2 = res2.decode(
'utf-8'
)print
(data1)
# 好print
(data2)
# 好
1、什麼是檔案?
檔案是作業系統提供給使用者/應用程式操作硬碟的一種功能(虛擬單位)
使用者/應用程式對硬碟的讀寫操作都是在對作業系統發起呼叫
作業系統在收到呼叫請求後,會將該請求轉換成具體的硬碟操作
2、為什麼要用檔案?
訪問硬碟必須使用檔案
應用程式操作檔案都是為了將記憶體中的資料永久儲存到硬碟中去
3、如何使用檔案?
f =
open
(file_path, mode)
f.write(data)
f.close(
)# 呼叫完以後要關柄操作,釋放作業系統資源
檔案操作與計算機三層結構的關係:
使用者/應用程式----------檔案物件/控制代碼----------->遙控器
作業系統---------------開啟檔案a.txt --------->空調
計算機硬體--------------硬碟
(1)檔案的路徑(找到檔案的位址)
絕對路徑:
windows系統中,如 r'd:\py\data\a.txt' ,字首r是為了規避檔案路徑中的轉義字元
linux系統中,如:/a/b/c/d.txt
相對路徑:基於程式所在的資料夾往後找,如 r'a.txt' ,(當前資料夾中的a.txt)
(2)檔案控制代碼(相當於乙個遙控器)
f =
open
(r'a.txt'
, mode=
'rt'
, encoding=
'utf-8'
)data = f.read(
)print
(data)
f.close(
)
01字元編碼
程式設計中經常用到字元編碼,常用字元編碼有ascii american standard code for information interchange 編碼 unicode編碼 unicode編碼又有utf 8形式和utf 16形式 ascii表如下 擴充套件ascii表如下 unicode是一...
49 字元編碼
目錄六.總結 開啟編輯器就啟動了乙個程序,是在記憶體中的,所以,用編輯器編寫的內容,也都是存放在記憶體中的,斷電後資料丟失。要想永久儲存,需要點選儲存按鈕 編輯器吧記憶體的資料刷到硬碟上。在我們編寫的乙個py檔案,沒有執行前,和編寫其它檔案沒有任何區別,都只是在編寫一堆字元而已。第三階段 pytho...
07 字元編碼
1.字元編碼 字元編碼針對的是文字無需考慮 視屏 音訊 等 2.編寫文字的過程 輸入的字元 字元編碼表 二進位制數字 2.1字元編碼表 就是字元與數字的對應關係 a 0 b 1 a 00 b 01 c 11 d 10 2.2ascii碼表 用八位二進位制表示乙個英文本元 所有的英文本元 符號最多也就...