You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python两文件循环传递JSON数据实现方案咨询

解决方案

第一步:修正 pythonone.py,实现逐个生成并输出JSON

原代码存在两个核心问题:随机数据仅初始化一次,导致循环内所有JSON内容完全重复;循环结束后才输出一次,无法实现逐个传递。修改后的代码如下:

import json
import time
from faker import Faker

fake = Faker()

def myrandomdata(min_val, max_val):
    return fake.random_int(min=min_val, max=max_val)

def main():
    for i in range(5):
        # 每次循环重新生成随机数据,保证JSON内容唯一
        random_ins_id = str(myrandomdata(20000, 10000000))
        random_inv_item_id = str(myrandomdata(20000, 10000000))
        random_inv_org_id = str(myrandomdata(1000, 100000))
        random_loc_id = str(myrandomdata(20000, 100000))
        qty = myrandomdata(1, 100)
        loc_type_id = myrandomdata(0, 4)
        
        # 构造当前循环的JSON对象
        json_obj = {
            'ID': random_ins_id,
            'QTY': qty,
            'EXT_REF': random_loc_id,
            'INV_ITEM_ID': random_inv_item_id,
            'ORG_ID': random_inv_org_id,
            'SERIAL_NUMBER': loc_type_id
        }
        
        # 转换为JSON字符串并立即输出,确保内容实时传递
        print(json.dumps(json_obj))
        time.sleep(3)

if __name__ == "__main__":
    main()

第二步:编写 pythontwo.py,实现逐个接收并处理JSON

从标准输入逐行读取pythonone.py输出的JSON,解析后处理,直到输入流结束(即pythonone.py循环完成):

import json
import sys

def process_my_data(json_data):
    # 这里替换为你的实际处理逻辑,示例仅打印关键字段
    print(f"已处理:ID={json_data['ID']}, 数量={json_data['QTY']}")

def main():
    # 逐行读取输入内容,每次处理一个JSON对象
    for line in sys.stdin:
        line = line.strip()
        if not line:
            continue
        try:
            json_obj = json.loads(line)
            process_my_data(json_obj)
        except json.JSONDecodeError:
            print(f"跳过无效JSON:{line}", file=sys.stderr)

if __name__ == "__main__":
    main()

第三步:运行方式

在命令行中使用管道连接两个脚本,实现输出与输入的实时逐个传递:

python pythonone.py | python pythontwo.py

运行后,pythonone.py每3秒生成一个JSON并输出,pythontwo.py会立即接收并处理,直到pythonone.py的5次循环完成后自动终止。

内容的提问来源于stack exchange,提问作者ditil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 10:50:23