写真をたくさんいただいたが,JPEGファイル内に記録されている日付が間違っている! 一括置換したいが,バイナリファイルである。どうするか。日付はファイルの冒頭近くに3箇所書き込まれているので,安全のため3箇所だけ置換する。読み書きはバイナリモードで行う。
#! /usr/bin/env python3
import sys
import re
for arg in sys.argv[1:]:
with open(arg, 'rb') as f:
file = f.read()
newfile = re.sub(b'2021:11:14 ', b'2019:11:15 ', file, count=3)
with open('new/' + arg, 'wb') as f:
f.write(newfile)
もう一つの例。壊れたWebMファイルを修復したい。WebMのシグネチャ b"\x1a\x45\xdf\xa3" より前を削ればよい。
#! /usr/bin/env python3
import sys
if len(sys.argv) != 3:
print(f"Usage: {sys.argv[0]} infile outfile")
exit()
with open(sys.argv[1], "rb") as f:
data = f.read()
offset = data.find(b"\x1a\x45\xdf\xa3") # webm signature
print("Offset:", offset)
if offset < 0:
print("Not a webm file")
exit()
with open(sys.argv[2], "wb") as f:
f.write(data[offset:])
Last modified: