字符編碼python
二進制和字符之間的轉換過程 --> 字符編碼vim
ascii,gbk,shit,fuck 每一個國家都有本身的編碼方式編輯器
美國電腦內存中的編碼方式爲ascii ; 中國電腦內存中的編碼方式爲gbk , 美國電腦沒法識別中國電腦寫的程序 , 中國電腦沒法識別美國電腦寫的程序函數
如今硬盤中躺着 ascii/gbk/shit/fuck 編碼的文件, 他們的編碼格式已經沒法修改了, 因此內存中出現unicode編碼, 內存中的unicode編碼方式能夠識別 ascii/gbk/shit/fuck 編碼的文件學習
用unicode編碼方式運行了 ascii/gbk/shit/fuck 編碼的文件, 最後仍是要裝入硬盤, 裝入硬盤早期用unicode存進去,可是 他在識別ascii的時候, 會把8位數字轉換成16位數字存入硬盤, 浪費空間, 因此出現了utf8(與unicode對應,而且壓縮unicode編碼的字符)編碼
utf8 能識別其餘國家的編碼,只識別unicode, utf8目前還不能放在內存,. 可是如今寫的代碼都是utf8, 歷史遺留ascii/gbk/shit/fuck 編碼的文件早晚消失/淘汰,要麼被轉換成utf8格式.因此早晚有一天內存中也是utf8.code
python2 和 python3字符編碼的區別內存
python2ci
用文件指定的編碼方式存儲定之後的變量unicode
python3
用unicode編碼方式存儲定之後的變量
之後寫文件以什麼格式存儲,就以什麼格式讀取
文件的 三種打開方式
r: 只讀 read
w:只寫 write 清空後寫入(文件不存在自動建立)
a:追加(文件不存在自動建立)
文本模式:t
二進制模式:b
t/b沒法單獨使用,只能和r/w/a一塊兒使用
with管理文件上下文
with open() as f: # 自動關閉
1、文件的兩種方式
文件的數據是存放於硬盤上的,於是只存在覆蓋,不存在修改這麼一說,咱們平時看到餓的修改文件,都是模擬出來的效果,具體的說有兩種實現方式。
1.1 方式一
將硬盤存放的該文件的內容所有加載到內存,在內存中是能夠修改的,修改完畢後,再由內存覆蓋到硬盤(word,vim,nodpad++等編輯器)。
import os with open('37r.txt') as fr, \ open('37r_swap.txt', 'w') as fw: data = fr.read() # 所有讀入內存,若是文件很大,會很卡 data = data.replace('tank', 'tankSB') # 在內存中完成修改 fw.write(data) # 新文件一次性寫入原文件內容 # 刪除原文件 os.remove('37r.txt') # 重命名新文件名爲原文件名 os.rename('37r_swap.txt', '37r.txt') print('done...')
done...
PS:遇到問題沒人解答?須要Python學習資料?能夠加點擊下方連接自行獲取
note.youdao.com/noteshare?id=2dce86d0c2588ae7c0a88bee34324d76
1.2 方式二
將硬盤存放的該文件的內容一行一行地讀入內存,修改完畢就寫入新文件,最後用新文件覆蓋源文件。
import os with open('37r.txt') as fr,\ open('37r_swap.txt', 'w') as fw: # 循環讀取文件內容,逐行修改 for line in fr: line = line.replace('jason', 'jasonSB') # 新文件寫入原文件修改後內容 fw.write(line) os.remove('37r.txt') os.rename('37r_swap.txt', '37r.txt') print('done...')
done...
總而言之,修改文件內容的思路爲:以讀的方式打開原文件,以寫的方式打開一個新的文件,把原文件的內容進行修改,而後寫入新文件,以後利用os模塊的方法,把原文件刪除,重命名新文件爲原文件名,達到以假亂真的目的。
2、定義函數的三種方式
2.1 無參函數
定義函數時參數是函數體接收外部傳值的一種媒介,其實就是一個變量名
在函數階段括號內沒有參數,稱爲無參函數。須要注意的是:定義時無參,意味着調用時也無需傳入參數。
若是函數體代碼邏輯不須要依賴外部傳入的值,必須得定義成無參函數。
def func(): print('hello nick') func() # hello nick
2.2 有參函數
在函數定義階段括號內有參數,稱爲有參函數。須要注意的是:定義時有參,意味着調用時也必須傳入參數。
若是函數體代碼邏輯須要依賴外部傳入的值,必須得定義成有參函數。
def sum_self(x, y): """求和""" res = x+y print(res) sum_self(1,2) # 3
2.3 空函數
當你只知道你須要實現某個功能,但不知道該如何用代碼實現時,你能夠暫時寫個空函數,而後先實現其餘的功能。
def func(): pass