3.15學習筆記
阿新 • • 發佈:2022-03-15
檔案內的游標移動
# 1.前情提要
with open(r'a.txt','r',encoding='utf8') as f:
print(f.read(3))
# read在文字模式下 括號內的數字表示的是讀取指定的字元個數
with open(r'a.txt', 'rb') as f:
print(f.read(9).decode('utf8'))
# read在二進位制模式下 括號內的數字表示的是讀取指定的位元組數
# 2.具體控制 seek方法可以控制游標的移動 在文字模式下移動的單位也是位元組數 seek(offset,whence) offset:控制移動的位元組數 whence:控制模式 0:相對於檔案開頭(讓游標先移動到檔案開頭) 支援文字模式和二進位制模式 1:相對於當前位置(讓游標先停留在當前位置) 只支援二進位制模式 2:相對於檔案結尾(讓游標先移動到檔案末尾) 只支援二進位制模式 with open(r'a.txt', 'rb') as f: print(f.read(3).decode('utf8')) f.seek(3, 1) # 基於當前位置 繼續往後移動三個位元組 f.seek(-3, 2) # 基於檔案末尾 往前移動三個位元組 print(f.tell()) # 獲取游標基於檔案開頭的位元組數 print(f.read().decode('utf8'))
檔案的修改
with open(r'b.txt', 'r+t', encoding='utf-8') as f: f.seek(9) # 不寫模式 預設是0模式 基於檔案開頭 並且相容文字和二進位制 f.write('<嘀嘀嘀>') """ 檔案資料在硬碟上其實是刻死 不可能從中間再新增新的內容 只能將老內容移除 刻新的 """ 實現思路:將檔案內容發一次性全部讀入記憶體,然後在記憶體中修改完畢後再覆蓋寫回原檔案 # 優點: 在檔案修改過程中同一份資料只有一份 # 缺點: 會過多地佔用記憶體 with open('b.txt', mode='r', encoding='utf-8') as f: data = f.read() with open('b.txt', mode='w', encoding='utf-8') as f: f.write(data.replace('張三','李四')) 實現思路:以讀的方式開啟原檔案,以寫的方式開啟一個臨時檔案,一行行讀取原檔案內容,修改完後寫入臨時檔案..., 刪掉原檔案,將臨時檔案重新命名原檔名(狸貓換太子) # 優點: 不會佔用過多的記憶體 # 缺點: 在檔案修改過程中同一份資料存了兩份 import os # 模組(後面會學) with open('b.txt', 'r', encoding='utf-8') as read_f, \ open('.b.txt.swap', 'w', encoding='utf-8') as wrife_f: for line in read_f: wrife_f.write(line.replace('jason', 'jerry')) os.remove('b.txt') # 刪除檔案 os.rename('.b.txt.swap', 'b.txt') # 重新命名檔案
函式
# 什麼是函式
函式是組織好的,可重複使用的,用來實現單一,或相關聯功能的程式碼段。
函式能提高應用的模組性,和程式碼的重複利用率。你已經知道Python提供了許多內建函式,比如print()。但你也可以自己建立函式,這被叫做使用者自定義函式。
定義規則
1.函式程式碼塊以 def 關鍵詞開頭,後接函式識別符號名稱和圓括號()。 2.任何傳入引數和自變數必須放在圓括號中間。圓括號之間可以用於定義引數。 3.函式的第一行語句可以選擇性地使用文件字串—用於存放函式說明。 4.函式內容以冒號起始,並且縮排。 5.return [表示式] 結束函式,選擇性地返回一個值給呼叫方。不帶表示式的return相當於返回 None。
python具體程式碼結構
def 函式名(引數1,引數2):
'''函式的註釋'''
函式體程式碼
return 返回值
1.def
是定義函式的關鍵字
2.函式名
函式名類似於是變數名 指代函式體程式碼 命名與變數名一致
3.括號
定義函式的時候 函式名後面肯定要先寫括號
4.引數
類似於使用函式的時候 給函式內部傳遞的資料 可以不寫 或者單個、多個
5.冒號
定義函式也需要有縮排的程式碼塊
6.函式的註釋
用於解釋函式的主要功能、使用方法等說明性文字
7.函式體程式碼
函式的核心功能 也是我們將來編寫的核心
8.return
後面跟什麼 那麼執行完函式之後就會返回什麼