檔案讀取之b模式

2022-08-18 04:57:11 字數 1537 閱讀 1021

1.模式介紹

t:

1、讀寫都是以字串(unicode)為單位

2、只能針對文字檔案

3、必須指定字元編碼,即必須指定encoding引數

b:binary模式

1、讀寫都是以bytes為單位

2、可以針對所有檔案

3、一定不能指定字元編碼,即一定不能指定encoding引數

總結:

1、在操作純文字檔案方面t模式幫我們省去了編碼與解碼的環節,b模式則需要手動編碼與解碼,所以此時t模式更為方便

2

文字格式也可以使用b模式

with

open(r'd.txt',mode='rb') as

f:res=f.read() # d檔案中的內容的utf-8編碼下的二進位制

print(res,type(res))

# b'\xe5\x93\x88\xe5\x93\x88\xe5\x93\x88a'

<

class

'bytes'

>

print(res.decode('utf-8'))

# 將內容重新以utf-8的格式                               # 解碼

檔案的拷貝

src_file=input('原始檔路徑》: ').strip()

dst_file=input('原始檔路徑》: ').strip()

with open(r'{}'.format(src_file),mode='rb') as f1,\

open(r'{}'.format(dst_file),mode='wb') as f2:

# res=f1.read() # 記憶體占用過大

# f2.write(res)

​for line in f1:

f2.write(line)

# 使用for迴圈會降低記憶體占用

檔案的迴圈讀取

1.while迴圈(可以控制自己每次讀取的資料量)

2.for迴圈(以行為單位,一行的內容過長時會導致一次性讀入記憶體的資料過大)

with

open(r'g.txt',mode='rt',encoding='utf-8') as

f:for

line

inf:

print(line)

with

open(r'g.txt',mode='rb') as

f:for

line

inf:

print(line.decode('utf-8'))

兩者效果相同

python讀取檔案用b模式讀取

f open aaa rb 返回的是位元組 字串編碼 python中所有的字串編碼為unicode,如果從乙個檔案讀取字串,那麼該字串的編碼就是該檔案的編碼。f.tell 返回當前的游標位置。以位元組計算 返回位子引數例如 1 f open bbb r encoding gbk 2 print f....

Golang 專案配置檔案讀取之 viper 實踐

在我們做乙個工程化專案的時候,經常涉及到配置檔案的讀取,viper 包很好地滿足這一需求,而且在 golang 生態中是流行度最高的。匯入方式 import github.com spf13 viper 這裡分享下我對 viper 包的使用關鍵實踐 接下來在工程入口處引用上面這個配置包的 init ...

PE結構讀取之DOS Header

有人說pe結構很重要,也有人說不重要。不同的人站在不同的角度有不同的看法。而我對pe結構僅僅是想有所了解,於是就有了下面一系列文章的出現。pe檔案中dos header的具體結構如下所示 下面的定義在winnt.h檔案中,這個檔案需要安裝程式設計環境,至少我將vc 6.0解除安裝後就找不到這個檔案了...