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

2024-06-16 11:41:00 发布

您现在位置:Python中文网/ 问答频道 /正文

这可能是一个奇怪的要求,但这是我遇到的。我搜索了一下,但什么也没留下。

我正在编写一个应用程序,这个应用程序使用了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()

知道吗?


Tags: 文件应用程序home属性egg记录静态xml
3条回答

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

例如brewer2mpl-1.4.1-py3.6.鸡蛋
重命名后brewer2mpl-1.4.1-py3.6.zip

现在,如果我们打开它,它将很容易解压缩,内容将放在同一目录中同名的文件夹中。 (在macOS Sierra上测试)

egg文件是zipfiles,因此必须使用Python标准库的zipfile模块访问其中的“stuff”,而不是使用内置的open函数访问其中的“stuff”!

从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

相关问题 更多 >