2

Windows 8でpython 3.3 32ビットを使用しています。物理ディスクからバイナリセクターを読み取りたいです。デバイスから開く、シークする、読み取る、伝えることはできますが、ファイルの終わりで空の読み取り結果が生成されず、許可例外 (33) がスローされます。また、seek(-512,os.SEEK_END) のように、最後に関連するシークも使用できません。SEEK_END または 2 を使用すると、無効な引数がスローされます。

デバイスを読み取るときに実際の許可エラーが発生する可能性があり、ユーザーにこの失敗を警告する必要があるため、eof を検出するために許可例外を使用する必要はありません。

ここで何がうまくいかないのか、または eof を検出する別の方法についてのヒントを歓迎します。

コード例は次のとおりです。デバイスは 1GBit USB です。seek/tell/prints は、読み取りが eof まで正常であることを示します。

コード:

device = r'\\.\PhysicalDrive2'  
disk = open(device,'rb')  
disk.seek(1994231*512)  
sector = disk.read(512)  
while sector!="":  
    sector = disk.read(512)  
    print(disk.tell()) 

出力:

1021047296 1021047808 1021048320 1021048832 1021049344 1021049856 1021050368 トレースバック (最後の最後の呼び出し): ファイル "D:\Development\eclipse\test\test.py"、25 行目、セクター = disk.read(512) [Err no IOError3]拒否された

4

1 に答える 1