Pythonを使用して、ファイル内の特定のオフセットでいくつかのバイトを上書きできるようにしたいと思います。
私の試みは惨めに失敗し、次のような結果になりました。
- オフセットでバイトを上書きするだけでなく、直後のファイルを切り捨てます(file mode = "w" or "w +")
- ファイルの最後にバイトを追加します(ファイルモード="a"または"a +")
ポータブルな方法でPythonを使用してこれを実現することは可能ですか?
これを試して:
fh = open("filename.ext", "r+b")
fh.seek(offset)
fh.write(bytes)
fh.close()
この python pageによると、 file.seek と入力して、特定のオフセットをシークできます。その後、好きなように書くことができます。
ファイルが切り捨てられないようにするには、「a+」でファイルを開いてから、正しいオフセットをシークします。
非常に非効率的ですが、現在、途中のバイトを上書きしない他の方法はわかりません(Ben Blanksのように):
a=file('/tmp/test123','r+')
s=a.read()
a.seek(0)
a.write(s[:3]+'xxx'+s[3:])
a.close()
オフセット 3 に「xxx」を書き込みます。123456789 --> 123xxx456789