Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 比特币交易映射抛出密钥错误_Python_Python 3.x_Bitcoin - Fatal编程技术网

Python 比特币交易映射抛出密钥错误

Python 比特币交易映射抛出密钥错误,python,python-3.x,bitcoin,Python,Python 3.x,Bitcoin,我有下面一段代码,它似乎一直运行到第36行recipientlist.append(target[“addr”]),然后抛出错误KeyError:“addr” 然而,数据中似乎有“addr”,因此不确定问题出在哪里 有人能帮忙吗 import json import requests z = 0 i = 0 firstpart = "https://blockchain.info/rawaddr/" initialinput = '3PaGEcGDjPsNQHAQ4pTmj

我有下面一段代码,它似乎一直运行到第36行recipientlist.append(target[“addr”]),然后抛出错误KeyError:“addr”

然而,数据中似乎有“addr”,因此不确定问题出在哪里

有人能帮忙吗

import json
import requests

z = 0
i = 0
firstpart = "https://blockchain.info/rawaddr/"
initialinput = '3PaGEcGDjPsNQHAQ4pTmjQuLXWoEwvnr11'
initialreq = firstpart + initialinput

firstjson = (requests.get(initialreq)).json()
graphvizlines = []

addresslist = []
usedaddresslist = []

addresslist.append(initialinput)
usedaddresslist.append(initialinput)

while i < 6:
    if z is 1:
        initialreq = firstpart + addresslist[i]
        firstjson = (requests.get(initialreq)).json()
    
    for transaction in firstjson["txs"]:
        payerlist = []
        recipientlist = []
        
        print("\n" + transaction["hash"])

        for item in transaction["inputs"]:
            payerlist.append(item["prev_out"]["addr"])
            if item["prev_out"]["addr"] not in addresslist:
                addresslist.append(item["prev_out"]["addr"])

        for target in transaction["out"]:
            recipientlist.append(target["addr"])
            if target["addr"] not in addresslist:
                addresslist.append(target["addr"])

        for payer in payerlist:
            for recipient in recipientlist:
                a = '"' + payer + '"' + " -> " + '"' + recipient + '"' + ";"
                if a not in graphvizlines:
                    graphvizlines.append(a)
    i = i + 1    
    z = 1
        

for t in graphvizlines:
    print(t)
导入json
导入请求
z=0
i=0
第一部分=”https://blockchain.info/rawaddr/"
initialinput='3PaGEcGDjPsNQHAQ4pTmjQuLXWoEwvnr11'
initialreq=第一部分+初始输入
firstjson=(requests.get(initialreq)).json()
graphvizlines=[]
地址列表=[]
usedaddresslist=[]
addresslist.append(初始输入)
usedaddresslist.append(初始输入)
而我<6:
如果z为1:
initialreq=第一部分+地址列表[i]
firstjson=(requests.get(initialreq)).json()
对于firstjson[“txs”]中的事务:
payerlist=[]
recipientlist=[]
打印(“\n”+事务[“哈希”])
对于事务处理[“输入”]中的项目:
payerlist.append(项目[“上一页”][“地址”])
如果项目[“上一个”][“地址”]不在地址列表中:
地址列表。追加(项目[“上一页”][“地址”])
对于交易记录[“输出”]中的目标:
recipientlist.append(目标[“addr”])
如果目标[“地址”]不在地址列表中:
addresslist.append(目标[“addr”])
对于付款人列表中的付款人:
对于收件人列表中的收件人:
a=““+”付款人+““+”->“+”“+”“+”接收人+“+”;”
如果a不在图形中:
graphvizlines.append(a)
i=i+1
z=1
对于图线中的t:
打印(t)

虽然
addr
存在于数据中,但它并不存在于每个
输入
元素中。检查
txs
中的最后一个元素,您将看到
输入
是:

"inputs": [
    {
        "sequence": 0,
        "witness": "304402203f872bfd7093fcdad6a3735cbd76f276279890b0304e6f23f54c51388cc2a84402203731d7a7f71265f072f6792c8f4d2e805ff8f86bbfbd0b48a187d573c051593001",
        "prev_out": {
            "spent": true,
            "spending_outpoints": [
                {
                    "tx_index": 0,
                    "n": 0
                }
            ],
            "tx_index": 0,
            "type": 0,
            "value": 1880609,
            "n": 1,
            "script": "0014292738ed3f9466f8eedd8c49e5bb013088a7052b"
        },
        "script": ""
    }
],
此元素缺少
prev\u out
addr

您需要首先检查
addr
元素是否存在,或者将循环包装在
try/except

firstjson['txs']中事务的
:
...
对于事务处理['inputs']中的项目:
地址=item.get('prev_out')。get('addr'))
如果(地址==无):
持续
payerlist.append(地址)
...

如果
prev\u out
不存在,上述操作仍将失败,因此您应该确认将在结果中出现的内容以及可能出现的内容。

addr
在数据中时,它不在每个
输入
元素中。检查
txs
中的最后一个元素,您将看到
输入
是:

"inputs": [
    {
        "sequence": 0,
        "witness": "304402203f872bfd7093fcdad6a3735cbd76f276279890b0304e6f23f54c51388cc2a84402203731d7a7f71265f072f6792c8f4d2e805ff8f86bbfbd0b48a187d573c051593001",
        "prev_out": {
            "spent": true,
            "spending_outpoints": [
                {
                    "tx_index": 0,
                    "n": 0
                }
            ],
            "tx_index": 0,
            "type": 0,
            "value": 1880609,
            "n": 1,
            "script": "0014292738ed3f9466f8eedd8c49e5bb013088a7052b"
        },
        "script": ""
    }
],
此元素缺少
prev\u out
addr

您需要首先检查
addr
元素是否存在,或者将循环包装在
try/except

firstjson['txs']中事务的
:
...
对于事务处理['inputs']中的项目:
地址=item.get('prev_out')。get('addr'))
如果(地址==无):
持续
payerlist.append(地址)
...
如果
prev\u out
不存在,上述操作仍将失败,因此您应该确认结果中的内容以及可能的内容