0

バイナリファイルを読み取るコードがあります:

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)に必要ですが、誰もが私の元のコードを変更したい、またはこれを行う方法についてより良いアイデアを持っているといいでしょう。

4

0 に答える 0