web-dev-qa-db-ja.com

Python Eggファイル内のファイルにアクセスする方法は?

これは奇妙な要件かもしれませんが、私が遭遇したものです。私はグーグルで検索しましたが、何も得られません。

XMLファイルに記録された多くの定数属性/値を使用しているアプリケーションをコーディングしています(静的ファイルでは変更されないため)。Eggファイルを生成するまでは問題なく動作します。

ロジックがXMLアクセス部分に到達すると、次のような1つの苦情がありました:/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()

何か案が?

20
Ripley

Eggファイルはzipファイルであるため、Python標準ライブラリの zipfile モジュール、not組み込みのopen関数を使用!

12
Alex Martelli

.Eggファイル内のコンテンツにアクセスする場合は、名前を変更し、拡張子を.Eggから.Zipに変更してから、解凍するだけです。これによりフォルダが作成され、内容は.Eggファイルのときと同じになります。

brewer2mpl-1.4.1-py3.6.Egg
名前の変更後brewer2mpl-1.4.1-py3.6.Zip

これを開くと、簡単に解凍され、コンテンツは同じディレクトリ内の同じ名前のフォルダに配置されます。 (macOS Sierraでテスト済み)

6
H S Rathore

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

1
Madhu Cheemala

デフォルトでは、pythonの下のeggspackingファイルは内部のxmlをパックに追加しないと思います

0
Rocky Chen

解凍ファイルを使用するだけです。卵はこれで十分です。

0
Jorge Machado