Python 檔案修改 函式介紹

2022-08-28 12:33:11 字數 2745 閱讀 5058

上節課複習:

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 ...