我正在编写一个python包,其中包含需要在./data/
子目录中打开数据文件的模块。现在我有到文件的路径硬编码到我的类和函数中。我想编写更健壮的代码,无论子目录安装在用户系统的什么位置,都可以访问它。
我试过各种方法,但到目前为止我没有运气。似乎大多数“当前目录”命令返回的是系统python解释器的目录,而不是模块的目录。
这似乎应该是一个微不足道的常见问题。但我好像想不出来。部分问题是我的数据文件不是.py
文件,所以我不能使用导入函数等。
有什么建议吗?
现在我的包目录看起来像:
/
__init__.py
module1.py
module2.py
data/
data.txt
我正试图从module*.py
访问data.txt
!
可以使用
__file__
获取包的路径,如下所示:为今天的工作提供解决方案。一定要使用这个API来避免重新发明所有的轮子。
需要一个真正的文件系统文件名。压缩的鸡蛋将被提取到缓存目录:
为指定的资源返回一个可读的类文件对象;它可以是实际的文件、StringIO或某些类似的对象。流处于“二进制模式”,即资源中的任何字节都将按原样读取。
使用pkg_资源的包发现和资源访问
标准的方法是使用setuptools包和pkg_资源。
您可以按照以下层次结构排列包,并根据此链接配置包设置文件以将其指向您的数据资源:
http://docs.python.org/distutils/setupscript.html#installing-package-data
然后,您可以使用pkg_资源重新查找和使用这些文件,如下链接所示:
http://peak.telecommunity.com/DevCenter/PkgResources#basic-resource-access
相关问题 更多 >
编程相关推荐