Как проверить этот файл JSON в правильный? - PullRequest
0 голосов
/ 25 июня 2019

этот код генерирует случайные данные json с использованием библиотеки фейера.

1.py:

import json 
from faker import Faker
import random
from random import randint
import subprocess
fake = Faker('en_US')



for a in range(1):

             abc =  {

            "phone":randint(6666666666,9999999999),
            "name": fake.name(),
            "email": fake.email(),



        }


with open('data.json', 'a+') as outfile:
        json.dump(abc, outfile)

2.py

   for i in range (20):
       subprocess.call(["python","1.py"])

, когда я вызываю 2.пион запустит и сохранит вывод, используя этот

 `with open('data.json', 'a+') as outfile:
        json.dump(abc, outfile) `  

, поэтому он хранит json без разделителя, как сохранить действительный json.

вывод, который он хранит:

  {"phone":"944078945","name":"elpeto","email":"asdW@gmail.com"}{"phone":"94407894511","name":"deelpeto","email":"zxcv@gmail.com"}

нужное мне отделение:

{"phone":"944078945","name":"elpeto","email":"asdW@gmail.com"},{"phone":"94407894511","name":"deelpeto","email":"zxcv@gmail.com"}

Ответы [ 2 ]

3 голосов
/ 25 июня 2019

Вместо двух сценариев, просто есть функции внутри одного сценария, которые делают то, что вам нужно, может быть?

import json
from faker import Faker
import random

fake = Faker("en_US")


def generate_fake():
    return {
        "phone": randint(6666666666, 9999999999),
        "name": fake.name(),
        "email": fake.email(),
    }


def generate_fakes(n):
    return [generate_fake() for x in range(n)]


def write_fakes(filename, n):
    with open(filename, w) as outfile:
        json.dump(generate_fakes(n), outfile, indent=2)


if __name__ == "__main__":
    write_fakes("data.json", 20)
0 голосов
/ 25 июня 2019

Просто добавьте "," вручную после дампа.

with open('data.json', 'a+') as outfile:
        json.dump(abc, outfile)
        outfile.write(",")

И только не делайте этого для последнего.

У вас есть странный способ сделать это. Гораздо проще будет один цикл внутри open, так как открытие файла - тяжелая операция.

def get_abs():
    return {
            "phone":randint(6666666666,9999999999),
            "name": fake.name(),
            "email": fake.email(),
        }

with open('data.json', 'a+') as outfile:
    for abs in range(random_range - 1):
        output_file.write(json.dumps(get_abs()) + ",")
    output_file.write(json.dumps(get_abs()))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...