Python cURL:在POST中从stdin发送零件数据

Python cURL:在POST中从stdin发送零件数据,python,json,curl,stdin,Python,Json,Curl,Stdin,我要做两个卷发。1个curl中的数据需要格式化并作为第2个curl中的输入发送。我尝试了以下几点: curl-XPOST-H“Content type:application/json”-d'{“a”:1,“b”:2}'''python-c“导入json,sys;o=json.load(sys.stdin);o1=dict(id=o['foo'],hash=o['bar']);print(json.dumps(o));print(json.dumps(o1));“;curl-XPOST-H”内容

我要做两个卷发。1个curl中的数据需要格式化并作为第2个curl中的输入发送。我尝试了以下几点:

curl-XPOST-H“Content type:application/json”-d'{“a”:1,“b”:2}'''python-c“导入json,sys;o=json.load(sys.stdin);o1=dict(id=o['foo'],hash=o['bar']);print(json.dumps(o));print(json.dumps(o1));“;curl-XPOST-H”内容类型:application/json”--d@-

在上面的cURL组合中,我通过python解析从1st cURL接收的数据,然后在stdin上打印接收的输出和解析的输出,然后将来自stdin的输入作为2nd cURL的数据


问题:有两个JSON正在stdin中打印,所有这些都在第二个cURL中作为数据传递。如何从stdin中只选择最后一行,即应该在第二次卷曲中传递的实际数据?

所建议的一种可能的方法帮助我将其正确。虽然从技术上讲,这不是问题的答案,但它是一个很好的解决办法

我正在错误流中打印输出,这些输出不需要发送到第二个cURL。工作程序如下:

curl-XPOST-H“内容类型:应用程序/json”-d'{“a”:1,“b”:2}”https://a.com/a' | \
python-c“导入json,sys;o=json.load(sys.stdin);o1=dict(id=o['foo'],hash=o['bar']);sys.stderr.write(json.dumps(o));print(json.dumps(o1));”|\
curl-XPOST-H“内容类型:application/json”https://a.com/b -d@-

那么为什么在python代码中打印(json.dumps(o))?我想知道第一次卷曲的输出。在这种情况下,我认为打印第一次卷曲的结果将是一个好主意。@sergio我很欣赏你的编辑,但我个人觉得不舒服,因为它会妨碍可读性。通过将其转换为
代码块
,它在水平方向上变得太长。如果有人试图理解它,如果它是紧凑的,它会有帮助。否则,当一些人到达最右边的部分时,他就失去了最左边部分的上下文&,太多太多了。@sergio对你的编辑做了一些修改,使其更具可读性。