檔案處理b模式與檔案操作的其它方法

2022-06-10 03:24:14 字數 2439 閱讀 1664

'''

檔案處理b模式

'''#

f = open('笑納', 'rb', encoding='utf-8') # b的方式不能指定編碼,位元組的形式讀取

#f = open('笑納', 'rb')

#data = f.read() # 在win系統中,換行其實是\r\n;linux系統是\n

#字串--encode-->位元組****位元組--decode-->字串

#print(data.decode('utf-8')) # 這個是位元組轉換成字串,用decode()函式進行解碼

#f.close()

#f1 = open('笑納', 'wb') # b的方式不能指定編碼,以位元組的形式寫入

#f1.write(bytes('你好啊\n', encoding='utf-8')) # bytes()函式是將字串轉換成位元組

#f1.write('你好'.encode('utf-8')) # 這個是字串轉換成位元組,用encode()函式進行編碼

#f1.close()

#f2 = open('笑納', 'ab')

#f2.write('這是ab追加模式'.encode('utf-8'))

#f2.close()

#總結:open()函式預設是讀'r'以及文字檔案't',所以對於其他型別檔案二進位制可以處理;二進位制可以跨平台;linux系統預設是二進位制,所以b模式無效

'''檔案操作的其它方法

'''#

f = open('笑納', 'r', encoding='utf-8', newline='') # python把win系統的換行自動處理為\n,加上newline=''關鍵字即可完整顯示換行符為\r\n

#print(f.closed) # 判斷檔案是否關閉,關閉則返回true

#print(f.encoding) # 取的是檔案開啟的編碼,也就是open()函式裡所寫的編碼,與原始檔以何種編碼存放到硬碟沒有關係

#f.flush() # 重新整理檔案,檔案是讀取到記憶體當中,做更改操作也是儲存在記憶體,使用此方法可以將修改後的檔案重新整理到硬碟中

#f.name # 檔名

#print(f.readlines())

#print(f.tell()) # 列印游標所處位置,1個中文為3個位元組(utf-8);注意:read(3)代表讀取3個字元,其餘的檔案內游標移動都是以位元組為單位如seek,tell,truncate

#f.readline()

#print(f.tell())

#f.seek(2) # 控制游標的移動,以位元組為單位;當游標移動到乙個位元組的字元中間時,此時列印會報錯,起始位元組錯誤

#print(f.tell())

#print(f.readline()) # 列印游標所處位置後面的內容

#print(f.read(1)) # 讀取幾個字元,換行有兩個字元\r\n

#f = open('笑納', 'r+', encoding='utf-8')

#f.truncate(40) # 擷取,屬於寫操作;把x個位元組以內的內容保留,餘後的都刪除;w和w+除外

'''檔案seek方法補充(0,1,2)

'''#

f = open('笑納', 'r', encoding='utf-8')

#f.seek(10, 0) # 0代表絕對位置,游標從檔案開頭開始

#print(f.tell())

#f = open('笑納', 'rb')

#f.seek(3, 1) # 從相對位置開始移動游標,也就是上次停留的位置

#print(f.tell())

#f.seek(3, 1)

#print(f.tell())

#f = open('笑納', 'rb')

#f.seek(0, 2) # 當第乙個引數為非負數時,預設游標在檔案末尾,然後再移動x個字元

#print(f.tell())

#f.seek(-7, 2) # 當第乙個引數為負數時,表示從檔案末尾向前移動x個字元

#print(f.tell())

#print(f.read())

#迴圈檔案的推薦方式

#f = open('笑納', 'rb')

#for i in f:

#print(i)

#如何列印日誌檔案的最後一行

#f = open('笑納', 'rb')

#for i in f:

#offs = -3

#while true:

#f.seek(offs, 2)

#data = f.readlines()

#if len(data) > 1:

#print('最後一行內容是:%s' % data[-1].decode('utf-8'))

#break

#offs *= 2

#後面這些開啟檔案操作都忘記關閉檔案了。。。

檔案處理的b模式

b代表位元組bytes模式即位元組模式。以b模式讀取檔案時不能指定encoding,因為已近要求以位元組的模式開啟,但可以在開啟並讀取資料後解碼。字串通過編碼變為bytes,bytes通過解碼變為字串。轉為bytes的兩種方式 a bytes 被轉內容 encoding utf8 b 被轉內容 en...

python檔案處理b模式

執行環境 windows python3.5 1 rb模式,從檔案中讀取內容,得到的是bytes型別 因為我們使用的是b模式,所以在open函式中不能指定編碼格式,所以列印出來的格式的二進位制的格式,而我們需要得到str型別 這裡我們講一下,一種簡便方法,來檢視檔案的編碼格式。雙擊右下角是可以更改編...

檔案的操作模式 x模式和b模式

演示1 with open a.txt mode x encoding utf 8 as f pass 增加新空檔案 a.txt 演示2 with open c.txt mode x encoding utf 8 as f f.read 增加新空檔案 c.txt 報錯 演示3 with open d...