如何使用Python在包内读取数据文件?
- 内容介绍
- 文章标签
- 相关推荐
本文共计611个文字,预计阅读时间需要3分钟。
问题:你的包中包含哪些代码需要去读取的数据文件。解决方案:假设你的包中的文件组织如下:+mypackage/+ __init__.py + somedata.dat + spam.py。现在假设已经设置了路径。
问题
你的包中包含代码需要去读取的数据文件。你需要尽可能地用最便捷的方式来做这件事。
解决方案
假设你的包中的文件组织成如下:
mypackage/
__init__.py
somedata.dat
spam.py
现在假设spam.py文件需要读取somedata.dat文件中的内容。你可以用以下代码来完成:
# spam.py import pkgutil data = pkgutil.get_data(__package__, 'somedata.dat')
由此产生的变量是包含该文件的原始内容的字节字符串。
讨论
要读取数据文件,你可能会倾向于编写使用内置的I/ O功能的代码,如open()。但是这种方法也有一些问题。
首先,一个包对解释器的当前工作目录几乎没有控制权。因此,编程时任何I/O操作都必须使用绝对文件名。
本文共计611个文字,预计阅读时间需要3分钟。
问题:你的包中包含哪些代码需要去读取的数据文件。解决方案:假设你的包中的文件组织如下:+mypackage/+ __init__.py + somedata.dat + spam.py。现在假设已经设置了路径。
问题
你的包中包含代码需要去读取的数据文件。你需要尽可能地用最便捷的方式来做这件事。
解决方案
假设你的包中的文件组织成如下:
mypackage/
__init__.py
somedata.dat
spam.py
现在假设spam.py文件需要读取somedata.dat文件中的内容。你可以用以下代码来完成:
# spam.py import pkgutil data = pkgutil.get_data(__package__, 'somedata.dat')
由此产生的变量是包含该文件的原始内容的字节字符串。
讨论
要读取数据文件,你可能会倾向于编写使用内置的I/ O功能的代码,如open()。但是这种方法也有一些问题。
首先,一个包对解释器的当前工作目录几乎没有控制权。因此,编程时任何I/O操作都必须使用绝对文件名。

