python:可执行zip文件可以包含数据文件吗?
问题内容:
作为python的新手,我最近才发现可以通过将__main__.py
文件放在文件顶部来直接执行.zip文件的功能。这对于python代码非常有用,但是我可以捆绑其他类型的文件并通过脚本访问它们吗?如果是这样,怎么办?
我的最终目标是将一些图像文件和python代码一起捆绑在一个.zip文件中,然后能够在应用程序内使用这些图像,而不必将其提取到磁盘中。我还希望捆绑版权声明,发行说明等,以便整个应用程序及其数据文件位于一个单独的zip中,无需将其提取到任何地方即可执行。
问题答案:
您可以使用pkg_resources
函数来访问文件:
# __main__.py
import pkg_resources
from PIL import Image
print pkg_resources.resource_string(__name__, 'README.txt')
im = Image.open(pkg_resources.resource_stream('app', 'im.png'))
im.rotate(45).show()
zipfile包含:
。
|-应用
| |-im.png
| `-__init__.py
|-README.txt
`-__main__.py
要使zipfile可执行,请运行:
$ echo '#!/usr/bin/env python' | cat - zipfile > program-name
$ chmod +x program-name
要测试它:
$ cp program-name /another-dir/
$ cd /another-dir && ./program-name