我在學習linux的檔案時,總結了乙個規律。面對乙個檔案時,要操作這個檔案首先就要開啟這個檔案,然後對其進行讀寫。當然這個讀寫的方式卻有很多。python內建了讀寫檔案的函式,用法和c是相容的。在python內建的函式open用於開啟和建立檔案物件,如下所示:
fd = open("path") #開啟檔案"path",path也可以是某個檔案的絕對路徑
fd = open("path", 'r') #以讀方式開啟檔案"path"
fd = open("path", 'w') #以寫方式開啟檔案"path"
上述例子只講了以文字模式開啟或者建立乙個檔案,那麼我們在實際開發中如果遇到這樣或者那樣的情況,下面我們分小節講述。如果正在處理二進位制資料,可以將』b』附加到檔案模式後面,這樣做的後果是,將會禁用換行符轉換
fd = open("path", 'rb')
fd = open("path", 'wb')
#為了便於區別文字模式和二進位制模式通常也會加上't'來區別,以便於更清楚的表達意圖
fd = open("path", 'rt')
fd = open("path", 'wt')
我們在操作檔案,特別是列印log的時候使用最多的就是追加,你試想一下,每次寫log檔案你如果都把檔案清除了,那麼你這log列印的還有什麼意義呢?所以檔案追加是一種特別有用的方法。
fd = open("path", 'ra')
fd = open("path", 'wa')
r+為可讀寫兩種操作 w+為可讀寫兩種操作(會首先自動清空檔案內容) a+為追加讀寫兩種操作
【注意以上三種操作方式均不可同時進行讀寫操作】
以上述』w+』為例
path = 'g:/python/boke/test1.txt'
#該檔案中已經存有漢字若干
fd = open(path,'w+',encoding='utf-8')
fd.writelines('sdssdsd')
fd.close()
fd = open(path,'r+',encoding='utf-8')
for line in fd:
print(line) #本行**判斷是否會改變檔案內容
fd.close()
模式
可做操作
若檔案不存在
是否覆蓋
r以唯讀方式開啟檔案。檔案的指標將會放在檔案的開頭報錯是
rb以二進位制格式開啟乙個檔案用於唯讀。檔案指標將會放在檔案的開頭報錯是
r+開啟乙個檔案用於讀寫。檔案指標將會放在檔案的開頭報錯是
rb+以二進位制格式開啟乙個檔案用於讀寫。檔案指標將會放在檔案的開頭報錯是
w只能寫建立是
wb以二進位制格式開啟乙個檔案只用於寫入。如果該檔案已存在則開啟檔案,並從開頭開始編輯,即原有內容會被刪除。如果該檔案不存在,建立新檔案在檔案的開頭建立是
w+開啟乙個檔案用於讀寫。如果該檔案已存在則開啟檔案,並從開頭開始編輯,即原有內容會被刪除。如果該檔案不存在,建立新檔案建立是
wb+以二進位制格式開啟乙個檔案用於讀寫。如果該檔案已存在則開啟檔案,並從開頭開始編輯,即原有內容會被刪除。如果該檔案不存在,建立新檔案。建立是
a開啟乙個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入
建立否,追加寫
ab以二進位制格式開啟乙個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入
建立否,追加寫
a+開啟乙個檔案用於讀寫。如果該檔案已存在,檔案指標將會放在檔案的結尾。檔案開啟時會是追加模式。如果該檔案不存在,建立新檔案用於讀寫
建立否,追加寫
ab+以二進位制格式開啟乙個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。如果該檔案不存在,建立新檔案用於讀寫。
建立否,追加寫
如果linux上編寫的指令碼必須處理由windows程式生成的文字檔案,而他們乙個有可能生成的換行符包含(『\n』, 『\r』 和』\r\n』),要處理這些檔案時python還提供了一種功能』u』和』ru』
#該功能可將不同的換行符編碼('\n', '\r' 和'\r\n')轉換為標準的'\n'字元,從而簡化跨平台工作
fd = open("path", 'u')
fd = open("path", 'ru')
方法
描述f.read([n])
最多讀取n個位元組
f.readline([n])
讀取單行輸入的最多n個字元。如果省略了n,該方法將讀取整行
f.readlines([size])
讀取所有行並返回乙個列表,size是可選的,用於指定在讀取操作停止前在檔案上讀取的近似字元數
f.write(s)
寫入字串s
f.writelines(lines)
寫入序列lines中的所有字串
f.close()
關閉檔案
f.tell()
返回檔案當前指標
f.seek(offset [,whence])
查詢新檔案位置
f.isatty()
如果f是個互動式終端,則返回1
f.flush()
清除輸出緩衝區
f.truncate([size])
將檔案截斷為最多size位元組
f.fileno()
返回乙個整數檔案描述符,如果關閉就發出valueerror異常
f.__next__()
返回下一行或引發stopiteration.在python2.7中對應的方法為f.next()
python學習筆記14(檔案讀寫)
讀檔案 python讀檔案流程 1 開啟檔案 2 讀檔案內容 3 關閉檔案 注釋 1 開啟檔案 open path,flag encoding errors path 要開啟檔案的路徑 路徑前加r flag 開啟方式 r 以唯讀的方式開啟檔案,檔案的描述符放在檔案的開頭 rb 以二進位制格式開啟乙個...
Python自學筆記(4) 檔案基本操作
今天的內容比較少,因為明天開始將是到重要的一塊 函式。不管哪種程式語言,函式既是基礎也是重難點。當把函式的內容學懂學透,將會迎來很大的進步與提高。正文 25 各種資料型別的轉換 元組 列表 list tuple 列表 元組 tuple list list str str.join list str ...
python 14 檔案操作
python中對檔案的讀寫也是非常方便的,本章節將講解讀 寫 讀寫等常用操作。下面講師必要的引數 1 檔案路徑 必須得知道檔案的路徑,不然怎樣進行讀寫?2 編碼方式 utf 8,gbk,gb2312.python3的str是unicode編碼儲存的,我們一般常用utf 8存在,編碼不了解的話容易出現...