写真をたくさんいただいたが,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: