这可能是一个奇怪的要求,但这是我遇到的。我用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()
有什么想法吗?
答案 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文件:模块级示例的mps-1.2.0_M2-py2.6.egg
结构:
在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)
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添加到打包中