39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
import json
|
|
from math import ceil
|
|
|
|
|
|
def split_json_file(input_file, n_splits):
|
|
# Read the JSON file
|
|
with open(input_file, "r") as file:
|
|
data = json.load(file)
|
|
|
|
# Calculate the size of each split
|
|
total_items = len(data)
|
|
items_per_split = ceil(total_items / n_splits)
|
|
|
|
# Split the data and save into separate files
|
|
for i in range(n_splits):
|
|
start_index = i * items_per_split
|
|
end_index = min((i + 1) * items_per_split, total_items)
|
|
split_data = data[start_index:end_index]
|
|
|
|
# Write the split data to a new JSON file
|
|
with open(f"{input_file.split('.')[0]}_split_{i}.json", "w") as split_file:
|
|
json.dump(split_data, split_file, indent=4)
|
|
|
|
|
|
def main():
|
|
import argparse
|
|
|
|
parser = argparse.ArgumentParser(description="Split a JSON file into multiple parts.")
|
|
parser.add_argument("--input_file", type=str, help="The JSON file to split")
|
|
parser.add_argument("--n_splits", type=int, help="The number of splits")
|
|
|
|
args = parser.parse_args()
|
|
|
|
split_json_file(args.input_file, args.n_splits)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|