Pythonic DumpファイルへのPythonic Way.
質問
私の質問は簡単です:
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.encode
をhexlify
に変更することができ、その関数は必要なイテレータを正確に返します。または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')
. 所属していません StackOverflow