0

python gnupgを使用しているときに、いくつかのデータに署名し、pickleを使用して署名されたデータをファイルに保存すると、署名されたデータとともに大量のデータが保存されることに気付きました。これらの1つは、UNIX時間のタイムスタンプです。たとえば、次の行はタイムスタンプの一部です。

p24
sS'timestamp'
p25
V1347364912

ドキュメントにはこれについては何も記載されていないため、少し混乱します。pickleを使用してファイルをロードした後、タイムスタンプの記述や値を返す方法が表示されません。ただし、pickleが保存している場合は、pythonオブジェクトの一部である必要があります。これは、Pythonでこの情報にアクセスできる方法があるはずだという意味ですか?また、このデータを利用したいと思います。これは、ファイル自体を読み取ることで実行できる可能性がありますが、gnupgモジュールを使用してよりクリーンな方法を探しています。

4

2 に答える 2

1

gnupgは十分に文書化されていませんが、調べると、通常使用される属性以外に属性があることがわかります...

#234567891123456789212345678931234567894123456789512345678961234567897123456789

# core
import inspect
import pickle
import datetime

# 3rd party
import gnupg


def depickle():
    """ pull and depickle our signed data """
    f = open('pickle.txt', 'r')
    signed_data = pickle.load(f)
    f.close()
    return signed_data

# depickle our signed data
signed_data = depickle()
# inspect the object
for key, value in inspect.getmembers(signed_data):
    print key

そのうちの 1 つはタイムスタンプです...適切な名前のタイムスタンプです。これさえわかれば簡単に使えますが…

# use the attribute now that we know it
print signed_data.timestamp
# make it pretty
print datetime.datetime.fromtimestamp(float(signed_data.timestamp))

長くなってしまいましたが、この議論は、単に「signed_data.timestamp を使用してください」と言うのではなく、文書化されていない属性を特定するための inspect の使用を文書化することで役立つと思いました。

于 2012-09-12T18:57:48.790 に答える
0

Signpython-gnupgとVerifyクラスの一部のフィールドがドキュメントに記載されていないことがわかりました。python-gnupg source: を見る必要があります[PYTHONDIR]/Lib/site-packages/gnupg.py。フィールドを含む署名に接続されたすべての変数/フィールドを埋めるメソッドをSign持つクラスがあります。handle_status()timestamp

于 2012-09-12T19:10:27.317 に答える