目錄開啟文字的三種方式
絕對路徑和相對路徑
with 管理檔案上下文
檔案是作業系統為使用者或應用程式提供的乙個讀寫硬碟的虛擬單位。檔案的操作是基於檔案,即檔案的操作核心就是:讀和寫。也就是只要我們想要操作檔案就是對作業系統發起請求,然後由作業系統將使用者或應用程式對檔案的讀寫操作轉換成集體的硬碟指令(比如控制碟片轉動,控制機械手臂移動,以此來讀取資料)。
記憶體無法永久儲存資料,但凡我們想要永久儲存資料都需要把檔案儲存到硬碟中,而操作檔案就可以實現對硬體的操作。
從硬碟中讀取資料和寫入資料。
readable()、writable()判斷文字是否可讀或可寫,
for i in f:#一行一行讀取檔案
print(i)
#每一行末尾預設有乙個換行
r:read唯讀模式,唯讀不可寫,檔案不存在時會報錯,且f.read()一次性讀取檔案的所有內容,如果檔案非常大,會造成記憶體佔滿,電腦卡死,因此可以使用f.readline()/f.readlines()讀取內容。
f.close()#報錯
rt:唯讀不可寫encoding指定讀入的編碼格式
# rt:read by text
# rb:read by bytes這裡按照二進位制位讀取檔案,不需要加讀入的編碼格式
f.read()讀取檔案指標會跑到檔案的末端,如果再一次讀取,讀到的將會是空格。如果再次讀取,只能將檔案先關閉再次開啟然後讀取。
wt:只寫不可讀,w模式會先清空檔案,再進行寫入encoding指定寫入的編碼格式
r、rt
唯讀不可寫encoding指定讀入的編碼格式,如果對應的位址沒有檔案則會報錯。
w、wt
只寫不可讀,w模式會先清空檔案,如果沒有檔案會自動建立檔案,再進行寫入encoding指定寫入的編碼格式。
at只寫入(追加寫入)檔案不存在的時候會先建立檔案後寫入內容。
b絕對路徑:從碟符開始的路徑
相對路徑:執行檔案(當前執行的檔案)的資料夾下的檔名
未來寫專案盡量用相對路徑,執行檔案和要編輯的檔案放在同乙個資料夾下。
with open()方法不僅提供自動釋放作業系統占用的方法,並且with open可以使用逗號分隔,一次性開啟多個檔案,實現檔案的快速拷貝。
# with提供了乙個自動關閉檔案機制,with open 下面的檔案執行結束之後就會關閉檔案。
with open ('test.py',)
r+預設為r+t 把第乙個字替換掉,
a+ a模式預設在游標尾部。
這些方法都有一定的弊端,如果你用既可讀又可寫的形式開啟了乙個檔案,往裡頭寫東西,然後又讀,有可能出現讀取不到剛寫進去的東西,因為寫的過程存在時間延遲,如果這時你以為沒有寫入成功而重新寫入一次,就會報錯。
在python會有指標的概念但是這裡的指標和c語言不同,這裡的指標僅指游標的位置,指標在**你寫的字元就在那裡。
seek(offset,whence):offset代表指標的偏移量,偏移的單位是位元組的個數(utf8的每三個位元組為乙個字元)
tell():每次統計從檔案開頭到指標所在位置
with open('36.txt','rb') as fr:
fr.seek(4,0)
print(f"fr.tell():")
fr.tell():4
read(n): 這裡n代表字元的個數,除此之外,其他地方涉及到指標都是指位元組個數。
with open('36.txt','rt',encoding='utf-8') as fr:
print(f"fr.read(3):")
fr.read(3): sdf
truncate(n): truncate(n)是截斷檔案,所以檔案的開啟方式必須是可寫,但不能用w、w+等方式開啟,因為這兩種方式都會先清空檔案。所以要在r、r+、a、a+模式下使用,他的參照物永遠是檔案頭,且truncate()括號內不加引數相當於清空檔案。如果以兩位元組為單位擷取utf8格式檔案,則檔案會變成亂碼。 操作檔案 修改檔案中的內容
import os geci open a.txt encoding utf 8 new geci open a1.txt w encoding utf 8 for line in geci change line.replace 一 1 new geci.write change geci.clo...
基本操作 檔案操作
開啟檔案 f open yesterday r encoding utf 8 讀寫 f open yesterday w encoding utf 8 寫讀 f open yesterday a encoding utf 8 追加寫讀 f open yesterday wb 寫讀 二進位制檔案 vi...
檔案操作 檔案的讀取與寫入
stream open file,mode stream流 通過流進行讀或者寫 read 讀的方法有 read 讀取所有內容 readline 每次讀取一行內容 readlines 讀取所有的行儲存到列表中 readable 判斷是否可讀的 write 寫內容 寫的方法有 write 內容 然後寫當...