Как сохранить выходные данные скрипта, который зацикливает скрипт Python, используя подпроцесс? - PullRequest
1 голос
/ 15 мая 2019

Как сохранить вывод скрипта python, который зацикливает скрипт python

from datetime import datetime
import faker
import json
from faker import Faker
import random
from random import randint
import subprocess
import json
import os
from pprint import pprint
import subprocess
import sys


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

этот код зацикливает мой скрипт python, который генерирует случайные файлы json.мне нужно сохранять выход каждый раз, когда я зацикливаю его ..

curl.py код, который генерирует случайный json и сохраняет вывод в файл json

import faker
import json
from faker import Faker
import random
from random import randint
import subprocess
import json
import os
#subprocess.call([""])
from pprint import pprint

ids= ('5cda','7f36')

fake = Faker('en_US')

for ind in ids:
    cont = []
    #Overall dictionary with first and user_ids
    dct = {}
    for idx in range(20):


        sms =  {
            "id":"AB-Iasd",
            "body": fake.sentence(),
            "reae": fake.ean(),
            "ashe": fake.ean(),
            "id2": fake.ean(),
            "user_id": ind,
            "pid": fake.sentence()
        }
        cont.append(sms)
    #Use a dictionary to save cont list to first key, and ind to user_ids key
    dct['messages'] = cont
    dct['user_id'] = ind
    #print(dct)
    f_name = '{}.json'.format(ind)
    with open(f_name, 'w') as fp:
        #Save the dictionary
        json.dump(dct, fp, indent=4)
        print('saved {}'.format(f_name))


1 Ответ

0 голосов
/ 15 мая 2019

Вместо зацикливания внешнего файла curlloop1.py в другом файле, вы можете просто добавить общий цикл for, который выполняется 20 раз, собрать все словари в списке, а затем сохранить этот список как словарь в одном файле

import faker
import json
from faker import Faker
import random
from random import randint
import subprocess
import json
import os
#subprocess.call([""])
from pprint import pprint

ids= ('5cda','7f36')

fake = Faker('en_US')

msg_list = []

#Overall loop to run inner loop 20 times
for _ in range(20):
    #Loop to generate messages
    for ind in ids:
        cont = []
        #Overall dictionary with first and user_ids
        dct = {}
        for idx in range(20):


            sms =  {
                "id":"AB-Iasd",
                "body": fake.sentence(),
                "reae": fake.ean(),
                "ashe": fake.ean(),
                "id2": fake.ean(),
                "user_id": ind,
                "pid": fake.sentence()
            }
            cont.append(sms)
        #Use a dictionary to save cont list to first key, and ind to user_ids key
        dct['messages'] = cont
        dct['user_id'] = ind
        msg_list.append(dct)


#Saving overall data to a single dictionary and to a file
data = {"data":msg_list}

f_name = 'data.json'
with open(f_name, 'w') as fp:
    #Save the dictionary
    json.dump(data, fp, indent=4)
    print('saved {}'.format(f_name))

data.json будет выглядеть как

{
    "data": [
        {
            "messages": [
                {
                    "id": "AB-Iasd",
                    "body": "Up west accept third success bad.",
                    "reae": "0181541986524",
                    "ashe": "1490107025812",
                    "id2": "4087146706078",
                    "user_id": "5cda",
                    "pid": "Color wish method population affect."
                },
                {
                    "id": "AB-Iasd",
                    "body": "Human expect news son room recognize beautiful.",
                    "reae": "9417635708941",
                    "ashe": "0920108608482",
                    "id2": "8218562976929",
.....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...