pkgutil
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
还有一个好处,就是只要知道包名就可以找到对应包下面的数据文件,数据文件并不一定要在当前包里面。