main(): """ファイル内のUUIDに重複がないか検証するスクリプト""" print("start:", datetime.datetime.now()) uuids = set() with open(DATA_FILE) as input_file: records = input_file.read().splitlines() print("read file finished.") for line in records: data = json.loads(line) value = data["value"] if value in uuids: print(f"UUIDの重複が見つかりました: {line}") break uuids.add(value) print("end:", datetime.datetime.now()) if __name__ == "__main__": main() PyConKyushu 2024 @tokibito • JSONLファイル内のvalue(UUID)の重複 がないかチェックする • data.jsonlは550MBぐらいのファイル • 1000万行 {"id":2478416,"value":"612934e07b584dbdb5d8653eb81fc5c7"} {"id":5050349,"value":"ea56ac5c9fb54f8fb8236b91695bbae9"} {"id":3207974,"value":"a8bccb8160be443ea3e7c7efd466379f"}
main(): """ファイル内のUUIDに重複がないか検証するスクリプト""" print("start:", datetime.datetime.now()) uuids = set() with open(DATA_FILE) as input_file: records = input_file.read().splitlines() print("read file finished.") for line in records: data = orjson.loads(line) value = data["value"] if value in uuids: print(f"UUIDの重複が見つかりました: {line}") break uuids.add(value) print("end:", datetime.datetime.now()) if __name__ == "__main__": main() PyConKyushu 2024 @tokibito • JSONの読み込みをorjsonに変更 • https://pypi.org/project/orjson/