一、程序執行的三大核心硬件(***):
cpu
內存
硬盤
正常執行一個程序的要點:
一、將硬盤中的數據讀到內存
二、由cpu讀內存中的數據進行執行
三、在執行程序的時候,生成的數據,優先存入內存python
二、python解釋器執行一個py文件過程(***) 若是沒有python解釋器,py文件單純就是一個文本文件 因此說,想執行py文件,必須先執行python解釋器 一、將python解釋器的代碼有硬盤讀到內存 二、將py文件以普通文本文件的格式由硬盤讀到內存 三、python解釋器去內存中讀取py文件的數據 四、識別python語法,執行相應的操做 ps:任何一個文本編輯器的執行,前兩部都同樣
字符:世界上一切語言、文字
有必要考慮,圖片文件、音頻文件、視頻文件?windows
文件的輸入和輸出是兩個過程 人類輸入的內容都是人類本身能夠識別的字符 計算機只能識別0101010二進制字符 將人類的字符,存入內存和硬盤,要經歷一個過程: 人類的字符 >>>>>>> (字符編碼表) >>>> 計算機二進制 0 a 1 b 01 a 10 b 00 c 11 d ASCII碼錶(美國) 用八位二進制來表明一個英文字符(全部的英文字符+符號一共大概128左右) 0000 0000 1111 1111 最多隻能表示255位 八位二進制 = 8 bit 8 bit = 1 bytes 1024bytes = 1KB 1024KB = 1MB 1024MB = 1GB 1024GB = 1TB 1024TB = 1PB GBK(中國) 用2個bytes來表明一個字符,兼容英文字符 0000 0000 0000 0000 1111 1111 1111 1111 最多能夠表示65535位 shit(小日子過得不錯的日本人) fuck(韓國的) 萬國碼(unicode) 爲了兼容全部的國家的字符,生成unicode 全部的字符都用2bytes 0101 0101 a 0000 0000 0101 0101 a 一、佔用存儲空間 二、io次數增長,程序運行速度變慢(最致命) 在unicode二進制數據存入硬盤的時候,作優化 utf-8: utf-8只與unicode有對應關係 unicode transformation format 全部的英文字符用1個bytes表示 全部的中文字符用3個bytes表示 如今的計算機: 內存都是:unicode 硬盤都是:utf-8
須要掌握: 一、用戶不管輸入什麼字符,存入內存,unicode均可以兼容 二、硬盤中不管是什麼編碼的文件,讀到內存,均可以兼容unicode 數據的傳輸: 優先以本身的本國字符編碼進行傳遞 必須掌握(******)#五星級 (內存)unicode二進制字符 >>> 編碼(encode) >>> (硬盤)utf-8二進制字符 (硬盤)utf-8二進制字符 >>> 解碼(decode) >>> (內存)unicode二進制字符 (******) 保證不亂碼核心: 用什麼編碼存的數據,就用什麼編碼取
python2 : 默認的字符編碼ascii碼(由於當時的unicode還沒盛行) python3: 默認的字符編碼utf-8 文件頭: # coding:utf-8 用英文字符,是爲了讓全部的計算機均可以識別 pycharm默認的字符編碼是: utf-8 windows操做系統默認字符編碼: gbk
import copy l1 = [257, 'a', [4, 5, 6]] print(l1) print(id(l1)) # print(id(l1[0])) l2 = copy.deepcopy(l1) # [1, 'a', [4, 5, 6]] l2[2][0] = 4444 print(l2) print(id(l2)) print("l1:", l1) print("id_l1:", id(l1)) 這裏只須要了解便可,結論就是: 淺copy只是把大框架拿了過來,,而裏面的值仍是與原來同樣,即ID也同樣,若改變大框架裏面的小列表中的值,copy後小列表中的ID以及原小列表的ID都會改變。 深copy就是不止把大框架拿了過來,而把小框架裏的東西都拿了過來,改變小列表中的值,這個小列表的ID會變,而原小列表ID不變。
一、什麼是文件?框架
操做系統給你提供操做硬盤的一個工具編輯器
二、爲何要用文件?工具
爲了知足人類和計算機永久保存數據優化
三、怎麼用文件?編碼
相對路徑:必須與當前文件在同一目錄操作系統
絕對路徑:固定的只能在這臺電腦操做code
四、經常使用的字符意願orm
'r' 以只讀方式打開文件(默認) 'w' 以寫入的方式打開文件,注意會已存在的文件,即將已有的文件刪除 'x' 若是文件已存在,用此方式打開會發生異常 'a' 以寫入的方式打開,若是文件存在,會在末尾追加寫入 'b' 以二進制打開,主要用於圖片,視頻 't' 以文本的方式打開 '+' 能夠將r+w變成可讀寫模式 'u' 通用換行符
五、文件處理
f = open("a.txt") print(f.readable()) # 判斷當前文件是否可讀 print(f.writable()) # 判斷當前文件是否可寫 # del f # 回收變量資源 f.close() # 回收操做系統的資源 with open('a.txt',mode='r')as rf,\ open('a.txt',mode='w')as wf: # with會自動幫你回收操做系統的資源,無需本身操做 print(rf.readable()) print(wf.writable()) # r進行轉義 with open(r'D:\項目路徑\python13期\day07\a.txt')as f: print(f.read()) # 讀取文件
六、文件處理模式
with open(r'th.jpg', mode='rb')as rf,\ open('xiawuchameilv.png', mode='wb')as wf: xiawuchameilv = rf.read() wf.write(xiawuchameilv) """ 打開文件的三種模式: r : 一、只讀 二、若是文件不存在,會報錯 w:(慎用) 一、只寫 二、若是文件不存在,則新建一個文件寫入數據 三、若是文件內存在數據,會將數據清空,從新寫入 a: 一、追加寫 二、若是文件內存在數據,會在已有數據的後面追加數據 三、若是文件不存在,則新建一個文件寫入數據 處理文件的模式: t b """
七、文件打開模式
with open(r'a.txt', 'r', encoding='utf-8')as f: print(f.readable()) print(f.read()) print(f.readline()) # 執行一次,打印一行內容 print(f.readlines()) print(f.read()) print(f.readable()) print(f.read()) >>>True 亞峯666 [] True with open(r'b.txt', 'w', encoding='utf-8')as f: f.writelines(["乾巴爹\n",'加油']) >>>乾巴爹 加油 with open(r'aaaaa.txt','a',encoding='utf-8')as f: print(f.writable()) f.write("\n努力,奮鬥") >>>努力,奮鬥