如何访问Python egg文件中的文件?

时间:2010-09-07 02:19:58

标签: python egg

这可能是一个奇怪的要求,但这是我遇到的。我用Google搜索但没有产生任何结果。

我正在编写一个使用XML文件中记录的大量常量属性/值的应用程序(它们不会更改为静态文件),在我为它生成一个egg文件之前,工作正常。

当逻辑到达XML访问部分时,我得到一个这样的投诉: /home/Workspace/my_proj/dist/mps-1.2.0_M2-py2.6.egg/mps/par/client/syntax/syntax.xml

实际上我已经在上面的路径中捆绑了XML文件,但似乎Python不知道如何访问它。

访问XML的代码是......

file_handler = open(path_to_the_file)
lines = file_handler.read().splitlines()

有什么想法吗?

6 个答案:

答案 0 :(得分:12)

egg文件是zipfiles,因此您必须使用Python标准库的zipfile模块访问其中的“stuff”, not 并使用内置的{{ 1}}功能!

答案 1 :(得分:6)

如果要访问.egg文件中的内容,只需将其重命名并将扩展名从.egg更改为.zip,然后解压缩即可。 这将创建一个文件夹,其内容将与.egg文件时的内容相同

例如 brewer2mpl-1.4.1-py3.6.egg
重命名 brewer2mpl-1.4.1-py3.6.zip

现在,如果我们打开它,它将轻松解压缩,内容将被放入同一目录中具有相同名称的文件夹中。 (在macOS Sierra上测试)

答案 2 :(得分:1)

从egg文件中访问文件

是的,可以从egg文件中读取文件。

Egg文件:模块级示例的mps-1.2.0_M2-py2.6.egg结构:

mps-1.2.0_M2-py2.6.egg image

driverfile.py

import xml.etree.ElementTree
import mps.par.client as syntaxpath
import os
path = os.path.dirname(syntaxpath.__file__)
element = xml.etree.ElementTree.parse(path+'\\syntax\\syntax.xml').getroot()
print(element)

从eggfile中读取xml文件:

PYTHONPATH=mps-1.2.0_M2-py2.6.egg python driverfile.py

答案 3 :(得分:1)

*nix 系统上的 less 命令可以查看 zip 文件的内部。因此 less some.egg 也会列出 .egg 文件的内容。

答案 4 :(得分:0)

只需使用unzip file.egg就足够了。

答案 5 :(得分:0)

我认为默认情况下,python下的鸡蛋打包文件不会将您的xml添加到打包中