質問

私の質問は簡単です:

bashコマンドのPythonicウェイにコードする方法はありますか?

hexdump -e '2/1 "%02x"' file.dat
.

明らかに、OS、Papen、または任意のショートカットを使用せずに。)

編集:明示的に指定されていないが、コードがPython3.x

で機能していた場合は素晴らしいでしょう。

ありがとう!

役に立ちましたか?

解決

Python 2.x、 line.encode('hex') バイナリデータを16進数にエンコードします。そのため:

with open('file.dat', 'rb') as f:
    for chunk in iter(lambda: f.read(32), b''):
        print chunk.encode('hex')
.

(デフォルトでは、1行あたりの16進数の1ヘクスのペア。そうでない場合は、hexdumpまたはそれが何でも...)

を変更するだけです。

2引数 32 バッフリングを見るヘルプリンクをクリックします。アイデアを手に入れると、それはあまり複雑ではありません。

Python 3.x、 16 Unicode文字列をバイトに変換するコーデックのみが機能します。 iter 明示的に実行するには:

with open('file.dat', 'rb') as f:
    for chunk in iter(lambda: f.read(32), b''):
        print(codecs.encode(chunk, 'hex'))
.

またはそれは encode :< / P>

with open('file.dat', 'rb') as f:
    for chunk in iter(lambda: f.read(32), b''):
        print(binascii.hexlify(chunk))
.

ファイル全体をメモリに読み込むのではなく、それらを印刷するだけでなく、それらを印刷したい場合は、おそらくイテレータを作りたいです。これを関数に入れて、codecs.encodehexlifyに変更することができ、その関数は必要なイテレータを正確に返します。またはGeneXPRまたはprintコールを使用する:

with open('file.dat', 'rb') as f:
    chunks = iter(lambda: f.read(32), b'')
    hexlines = map(binascii.hexlify, chunks)
.

他のヒント

標準図書館はあなたの友達です。 binascii.hexlify()

単純 read() ファイル全体 encode('hex') 。より多くのPythonicがあるのでしょうか?

with open('file.dat', 'rb') as f:
    hex_content = f.read().encode('hex')
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top