上節課複習:1.字元編碼
1.1 如何解決亂碼問題:
字元訪問使用的編碼標準不一致
1.2 檔案頭
在檔案的首行寫入檔案頭,用於控制python直譯器讀取py檔案內容時使用的編碼
#coding:檔案存入硬碟時使用的編碼標準
ps:如果不指定檔案頭
python2預設使用ascii
python3預設使用utf-8
1.3 關於字串型別(只在執行python程式的第三個階段才有字串的概念)編碼的問題
python3中的字串型別str/位元組串bytes型別:
str*****=>unicode
x="上" #把"上"存成unicode格式的二進位制
bytes:
res=x.encode("gbk") #unicode ------編碼-------> gbk
res.decode("gbk") #gbk--------解碼--------->unicode
python2中的字串型別str/unicode型別:
str===>檔案頭指定的編碼格式存放的
#coding:gbk
x="上" #把"上"存成gbk格式二進位制
unicode
#coding:gbk
x=u"上" #把"上"存成unicode格式二進位制
2.檔案處理
什麼是檔案?
1.檔案是作業系統提供給使用者/應用程式用於間接地操作硬碟的抽象的單位
為何要用檔案?
1.為了將應用程式記憶體的資料永久儲存到硬碟
如何用檔案?
步驟:1.開啟檔案
f = open(r'檔案路徑',mode='rt',encoding='utf-8')
2.讀/寫操作
f.read()
f.write()
3.關閉檔案
f.close()
控制操作檔案內容的兩種模式(不能單獨使用,必須與r\w\a連用)
t: 讀寫都是以字串為單位(預設的),必須制定encoding引數
b: 讀寫都是以bytes型別為單位的,必須不指定encoding引數
開啟檔案的三種模式
r:唯讀模式
w:只寫模式
a:只追加寫模式
.replace() 方法用於在字串中用一些字元替換成另一些字元,或替換乙個與正規表示式匹配的子串。
今日內容:
1.控制檔案內指標的移動
f.seek()
f.seek(offset,whence)有兩個引數:
offset: 代表控制指標移動的位元組數
whence:代表參照什麼位置進行移動
whence = 0:參照檔案開頭(預設的),特殊???,可以在t和b模式下使用
whence = 1:參照當前所在的位置,必須在b模式下用
whence = 2:參照檔案末尾,必須在b模式下用
f.tell() 檢視幾個位元組
f.read(n)
檔案內指標移動, 只有t模式下的read(n), n代表的字元的個數
除此以外檔案內指標的移動都是以位元組為單位
f,truncate(n) 截斷檔案
2.修改檔案的兩種方式
方式1:
1.將檔案內容由硬碟讀到記憶體
2.在記憶體中完成修改
3.將記憶體中修改後的結果覆蓋寫回硬碟
優點:在檔案修改的過程中硬碟上始終乙份資料
缺點:占用記憶體過多,不適用於大檔案
方式2:
1.以讀的方式開啟原始檔,以寫的方式開啟乙個臨時檔案
2.從原始檔中每讀一樣內容修改完畢後寫入臨時檔案,直到原始檔讀取完畢
3.刪掉原始檔,將臨時檔案重新命名為原始檔
優點:同一時刻在記憶體中只存在原始檔的一行內容,不會過多地占用記憶體
缺點:在檔案修改的過程中會出現原始檔與臨時檔案共存,硬碟上同一時刻會有兩份資料,即在修改的過程中會過多地占用硬碟
3.函式相關
函式的定義
1.什麼是函式
函式就是具備某一功能的工具
2.為什麼要用函式
2.1 程式的組織
3.如何用函式
函式的使用必須遵循的原則:先定義,後呼叫
修理工事先準備工具的過程即函式的定義
修理工遇到應用場景拿來工具就用即函式的呼叫
def:定義函式的關鍵字
函式名:就相當於乙個變數名,指向函式的記憶體位址,
注意:函式的記憶體位址加()就可以觸發函式體**的執行
函式的呼叫:
函式的使用分為兩個階段:
定義階段: 只檢測語法,不執行**
呼叫階段: 執行函式體**
語法:def 函式名(引數1,引數2,....):
'''文件注釋
:param 引數1:
:param 引數2:
:return:
'''......
return 返回值
函式的返回值:
return : 函式體**塊執行的成果
函式的引數:
引數就是函式的呼叫者為函式體**傳值的媒介,在python中函式的引數無需宣告型別
定義時無引數,意味著呼叫時也無需傳入引數
定義無參函式:
當函式體的**邏輯不依賴任何傳入的值就能執行,就不需要定義引數
定義有參函式:
當函式體的**邏輯依賴於外部呼叫者傳入的值才能執行,必須定義引數用來接收外部傳入的值
Python 修改檔案
一 有時候我們會遇到在寫入檔案後,其實內容並未被寫到檔案裡面的問題 原因是內容先寫到緩衝區,緩衝區滿時,才寫入磁碟 解決 用f.flush 強制把緩衝區裡面的資料寫到磁碟上 fw open username.txt w fw.write 測試 fw.flush 二 修改檔案簡單直接的方法 repla...
python檔案修改
檔案轉至 1 def alter file,old str,new str 2 3 替換檔案中的字串 4 param file 檔名 5 param old str 就字串 6 param new str 新字串 7 return 8 9 file data 10 with open file,r ...
python學習之檔案修改和函式基礎
編寫乙個監測檔案末尾追加內容的小程式 import time with open access.log mode rb as f 1 將指標跳到檔案末尾 f.read 錯誤 f.seek 0,2 while true line f.readline if len line 0 time.sleep ...