Validate and format JSON files

后端 未结 3 1494
情歌与酒
情歌与酒 2021-02-01 16:04

I have around 2000 JSON files which I\'m trying to run through a Python program. A problem occurs when a JSON file is not in the correct format. (Error: ValueError: No JSO

3条回答
  •  感情败类
    2021-02-01 17:00

    Here is a full python3 example for the next novice python programmer that stumbles upon this answer. I was exporting 16000 records as json files. I had to restart the process several times so I needed to verify that all of the json files were indeed valid before I started importing into a new system.

    I am no python programmer so when I tried the answers above as written, nothing happened. Seems like a few lines of code were missing. The example below handles files in the current folder or a specific folder.

    verify.py

    import json
    import os
    import sys
    from os.path import isfile,join
    
    # check if a folder name was specified
    if len(sys.argv) > 1:
        folder = sys.argv[1]
    else:
        folder = os.getcwd()
    
    # array to hold invalid and valid files
    invalid_json_files = []
    read_json_files = []
    
    def parse():
        # loop through the folder
        for files in os.listdir(folder):
            # check if the combined path and filename is a file
            if isfile(join(folder,files)):
                # open the file
                with open(join(folder,files)) as json_file:
                    # try reading the json file using the json interpreter
                    try:
                        json.load(json_file)
                        read_json_files.append(files)
                    except ValueError as e:
                        # if the file is not valid, print the error 
                        #  and add the file to the list of invalid files
                        print("JSON object issue: %s" % e)
                        invalid_json_files.append(files)
        print(invalid_json_files)
        print(len(read_json_files))
    parse()
    

    Example:

    python3 verify.py

    or

    python3 verify.py somefolder

    tested with python 3.7.3

提交回复
热议问题