23

这可能是一个奇怪的要求,但这是我遇到的。我用谷歌搜索但一无所获。

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

任何的想法?

4

6 回答 6

19

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

于 2010-09-07T02:23:33.850 回答
11

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

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

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

于 2017-03-25T05:06:37.670 回答
1

赶紧跑unzip file.egg


您可以unzip在 Debian/Ubuntu 上安装

sudo apt install unzip

或者在 macOS 上通过安装 Homebrew然后

brew install unzip
于 2018-02-23T11:45:18.377 回答
1

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

于 2021-01-08T09:48:11.717 回答
0

从 egg 文件中访问文件

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

Egg 文件:mps-1.2.0_M2-py2.6.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)

从 eggfile 中读取 xml 文件:

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

于 2018-05-03T09:40:32.113 回答
0

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

于 2019-04-26T03:06:26.543 回答