首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何保存循环中的子流程的输出(json文件

如何保存循环中的子流程的输出(json文件
EN

Stack Overflow用户
提问于 2019-05-15 16:06:00
回答 2查看 317关注 0票数 1

此代码发送将生成一个随机的json文件,其中包含所提供的用户ids和btw范围。

因此,此代码为每个用户输出50个json。

代码语言:javascript
复制
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','6cda')

fake = Faker('en_US')

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

        sms =  {
            "id":"AB-asfgw",
            "body": fake.text(),
            "mime": fake.ean(),
            "hashed": fake.ean(),
            "pid": fake.ean(),
            "user_id": ind,
            "text": fake.sentence()
        }
        cont.append(sms)

    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))    

auth = "authorization: token 1324"
file = "5cda.json"
fd=open("5cda.json")
json_content = fd.read()
fd.close()


subprocess.run(["grpcurl", "-plaintext","-H", auth,"-d",json_content,"-format","json","100.20.20.1:5000","api.Service/Method"])

此loop.py代码循环第一个代码20次

代码语言:javascript
复制
from datetime import datetime
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
import subprocess
import sys



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

我需要为每个循环保存loop.py代码的输出。并存储该json。示例:我们在loop.py中循环第一个代码20次,因此存储的输出应该类似于5cda1.json .5cda20.json和6cda1.json.6cda20.json

这里我们给出了两个用户ids ids= ('5cda','6cda'),因此输出将总共是40个json文件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-15 16:18:59

您可能希望将文件保存逻辑放在for ind in ids:循环中,并在整个循环中使用索引来保存具有不同名称的文件。

代码语言:javascript
复制
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 i 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)

        #Append the index to the file here, and save the file
        f_name = '{}{}.json'.format(ind,i+1)
        with open(f_name, 'w') as fp:
            # Save the dictionary
            json.dump(dct, fp, indent=4)
            print('saved {}'.format(f_name))

您将获得40个文件,根据您的要求,在所有文件的独特内容。

票数 0
EN

Stack Overflow用户

发布于 2019-05-15 16:21:38

如果您将J-son写入到STDOUT中,并且在loop.py中将STDOUT重定向到文件,则可以将被调用的python文件的输出保存到一个文件中。在你的“生成器”文件中:(当然,如果你不想得到无效的J-son文件,你应该删除其他打印。)

代码语言:javascript
复制
...
dct['messages'] = cont
dct['user_id'] = ind
print(dct)
...

在loop.py文件中:

代码语言:javascript
复制
subprocess.call(["ardbuf", "-oL", "python","grploop1.py", ">", test_folder/tmp_file.json])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56144385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档