檔案操作和函式基礎
阿新 • • 發佈:2022-03-15
檔案操作和函式基礎
檔案內游標的移動(瞭解性知識)
# 讀取指定長度內容 eg: with open('b.txt','r',encoding='utf8') as f: print(f.read(3)) with open('b.txt','rb') as f1: print(f1.read(3).decode('utf8')) 輸出結果: 你好a 你 '''在使用read()方法時,t模式,引數是字元數,r模式,引數是位元組數''' # 怎麼使游標移動? # seek(offset,whence): ''' offset:控制游標移動的位元組數 正數:向文字末尾移動 負數:向檔案頭部移動 whence:控制移動模式 0模式:讓游標在停留在檔案開頭 支援文字和二進位制模式 1模式:讓游標停留在當前位置 只支援二進位制模式 2模式:讓游標停留在檔案末尾 只支援二進位制模式 ''' eg: # with open('b.txt','rb') as f1: # f1.seek(0, 0) # print(f1.read(3).decode('utf8')) # 游標在檔案開頭,向後輸出三個位元組 # f1.seek(3, 1) # print(f1.read(3).decode('utf8')) # 游標在開頭第三個位元組,向後移動三個位元組,向後輸出三個位元組 # f1.seek(-3, 2) # print(f1.read(3).decode('utf8')) # 游標在檔案末尾,向前移動三個位元組,向後輸出三個位元組 輸出結果; 你 ads as # 實時監測檔案內是否有新增內容並打印出來(沒有太多實用意義) with open('b.txt','rb') as f: f.seek(0,2) while True: if len(f.readline()) == 0: print(f.readline().decode('utf8')) f.seek(0,2)
檔案修改(瞭解性知識)
# 硬碟上的檔案修改的兩種思想
1. 覆蓋修改
2. 新建命名
1. 覆蓋修改
# 把檔案一次性讀入記憶體,然後在記憶體中修改完成後覆蓋原檔案
# 優點: 在檔案修改過程中同一份資料只有一份
# 缺點: 會過多地佔用記憶體
2. 新建命名
# 以讀的方式開啟該檔案,以寫的方式新建檔案,一行行讀取原檔案,修改後寫入新檔案,完成後重新命名新檔案為老檔案的名字
# 刪掉原檔案,將臨時檔案重新命名原檔名(狸貓換太子)
# 優點: 不會佔用過多的記憶體
# 缺點: 在檔案修改過程中同一份資料存了兩份
函式簡介
# 為什麼要有函式? 為了讓一段功能程式碼重複多次的在不同地方使用。類似於迴圈,不過迴圈的程式碼只能在一個地方使用,而函式就是為了在不同的地方可以使用到該功能程式碼。例如我們常用的len(),這就是一個python內建函式,我們需要用了,隨時隨地都可以拿來用。 # 函式的分類 1. 內建函式 2. 自定義函式 1. 內建函式 python自帶的函式,python的開發者寫好的,我們只需要知道他能幹什麼,怎麼呼叫就行了。 2. 自定義函式 由我們程式設計師自己寫出來的可供重複呼叫的功能程式碼。 eg: # 自定義len()函式 def my_len(args): num = 0 for data in args: num += 1 return num list1 = [11,22,33,44,55,66] print(len(list1)) print(my_len(list1)) 執行結果: 6 6 可以看到,我們寫的功能程式碼可以實現和內建函式一樣的功能,且你可以在任何地方試用他(前提是函式要先定義好)無數次,不需要再使用迴圈去完成反覆使用程式碼的過程。 # 函式的語法結構 def 函式名(引數): '''函式功能說明''' 函式體程式碼(函式要執行的功能) return 返回值 1. def:定義函式關鍵字,向python說明,"我要定義函數了" 2. 函式名:類似於變數名,為了以後用它能找到他 3. 括號:用來放參數的 4. 引數:你要讓函式幫你加工東西,給他的原材料 5. 冒號:開啟函式體程式碼縮排 6.函式的註釋:用於解釋函式的主要功能、使用方法等說明性文字 7.函式體程式碼:函式的核心功能 8.return:函式執行完了返回給你的結果 """ 定義函式需要使用def關鍵字 定義函式的過程不會執行函式體程式碼 只會檢測語法 def index(): xsadasd 定義的時候不會報錯 def index1(): if 語法錯誤定義的時候就會報錯 呼叫函式需要使用函式名加括號 """