バイナリファイルを読み取るコードがあります:
n = 820
with open('/home/drdos/work/PTSIBS01.PDA', "rb") as f:
while True:
data = f.read(n)
if not data:
break
filename = str(data[3:18])
x = open(filename, 'wb').write(data)
しかし、私の問題は、c0deに表示されているように、反復して分割しようとしているファイルに、次のような名前の二重スラッシュ( "//")が含まれていることです。
07112011142635 // TS
プログラムは2回実行され、2つのファイルを作成した後、次のように表示されます。
drdos@poison:~/work$ python pybin.py
Traceback (most recent call last):
File "pybin.py", line 11, in <module>
x = open(filename, 'wb').write(data)
IOError: [Errno 2] No such file or directory: '12011142635//PT'
基本的なビューを提供するために再開すると、このビットバイナリファイルからレコードファイルを作成するコードが存在し、820バイトごとに、その内容が820バイトで、間に存在する文字列の正確なコピーであるファイル名を持つファイルが作成されます。 3バイトと18バイト。
ファイルタイプ=File.Dat私はすべてのレコードを抽出する必要があります各レコードは=1レコードは次の値に等しいです:
Field | Format | name | len | description
1 array NR_UP 2 //
2 array Bla_N 16 ASCII coded i need for filename
3 Binary Array Sig 256 content
4 Binary Array Sig 270 content
5 Binary Array SigA 256 content
6 Hash Hash 20 Sha1
このような各レコードにはファイルが必要です:)そしてこれはすべての20Mbのソース(File.dat)に必要ですが、誰もが私の元のコードを変更したい、またはこれを行う方法についてより良いアイデアを持っているといいでしょう。