0

私はすでにウェブを検索しており、これを検索するのに丸1週間費やしました. 現在非常に失われています。

私はプログラミングが初めてで、現在、オフセット値の後に設定された量のバイトを削除する方法を探しています(そのオフセットの後にすべてを削除するという意味ではありません)。

今はこれしか持ってない

filep = open('filepath', 'r+')
filep.seek(offset in dec)
#command to delete a set amount of bytes from here
filep.save()
filep.close()

この作業を行うにはどうすればよいですか?

4

3 に答える 3

4

Veedrac が既に指摘したように、最も簡単な方法は、変更されたコンテンツを含む新しいファイルを作成することです。元のファイルが不要になった場合は、後で新しいファイルを移動できます。

次のコードは、新しいファイルを作成するのに役立ちます。

OFFSET = 3
ENDOFFSET = 4

with open( 'file.txt', 'rb' ) as inputfile, open( 'out.txt', 'wb' ) as outfile:
    outfile.write(inputfile.read( OFFSET - 1 ))
    inputfile.seek(ENDOFFSET)
    outfile.write(inputfile.read())

ファイルを扱う場合、 with ステートメントは非常に便利です

于 2013-09-24T12:13:02.163 に答える
0

それはいけません。ファイルを書き換える必要があります。次のいずれかの場合にのみ、ファイルを変更できます。

  • 長さを変えない
  • 君は最後から変わる

したがって、最後まで上書きして切り捨てる必要があります。特に新しいファイルを作成してからアトミックに移動する場合は、ファイルを上書きすることをお勧めします。

于 2013-09-24T11:35:18.267 に答える
0

ファイル内からバイトを削除する別の方法を次に示します。

def zapper(filepath, offset, length):
    with open(filepath, 'rb+') as filep:
        filep.seek(offset + length)
        data = filep.read()
        filep.seek(offset)
        filep.write(data)
        filep.truncate()
于 2013-09-26T03:34:58.257 に答える