pkgutil

2022-06-23 16:09:13 字數 727 閱讀 9659

import pkgutil  

def read():

data_bytes = pkgutil.get_data(__package__, 'data.txt')

data_str = data_bytes.decode()

print(data_str)

pkgutil是python自帶的用於包管理相關操作的庫,pkgutil能根據包名找到包裡面的資料檔案,然後讀取為bytes型的資料。如果資料檔案內容是字串,那麼直接decode()以後就是正文內容了。

為什麼pkgutil讀取的資料檔案是bytes型的內容而不直接是字串型別?

這是因為並不是所有資料檔案都是字串,如果某些資料檔案是二進位制檔案或者,那麼以字串方式開啟就會導致報錯。所以為了通用,pkgutil會以bytes型方式讀入資料,這相當於open函式的“rb”讀取方式。

使用pkgutil還有一個好處,就是隻要知道包名就可以找到對應包下面的資料檔案,資料檔案並不一定要在當前包裡面。