-1

我是编程新手,我遇到了以下问题。

我找不到将列表对象作为参数传递给以下函数的方法。

我使用该函数的目标是逐个遍历所有列表对象并将数据保存为名为 erc20 的变量。

链接到 .json 文件//链接到 etherscan-python github

from etherscan import Etherscan
import json


with open('adress-tracker.json') as json_file:
    json_data = json.load(json_file)

    print(json_data)


# Here we create a result list, in which we will store our addresses
result_list = [json_dict['Address'] for json_dict in json_data]

eth = Etherscan("APIKEY") #removed my api key

erc20 = eth.get_erc20_token_transfer_events_by_address(address = result_list, startblock="0", endblock="999999999", sort='asc')

print(erc20)


这将返回以下错误:

AssertionError: Error! Invalid address format -- NOTOK

当我直接添加地址或将其链接到变量时,它工作得很好。但是,我需要找到一种方法如何将这些功能应用于所有地址,因为我计划添加数百个。

我尝试将列表更改为目录,并尝试使用 (*result_list) 实现关键字参数,或者创建一个名为 params 的新变量,其中包含所有需要的参数。然后使用 (*params)。但不幸的是,我无法解决如何解决这个问题。

非常感谢您!

4

1 回答 1

0

此函数需要单个地址,因此您必须使用for-loop 分别检查每个地址

erc20 = []

for address in result_list:
    result = eth.get_erc20_token_transfer_events_by_address(address=address, 
                                                            startblock="0", 
                                                            endblock="999999999", 
                                                            sort='asc')
    erc20.append(result)
    
print(erc20)

编辑:

对我有用的最小工作代码:

import os
import json
from etherscan import Etherscan

TOKEN = os.getenv('ETHERSCAN_TOKEN')
eth = Etherscan(TOKEN)

with open('addresses.json') as json_file:
    json_data = json.load(json_file)
    #print(json_data)

erc20 = []

for item in json_data:
    print(item['Name'])
    result = eth.get_erc20_token_transfer_events_by_address(address=item['Address'],
                                                            startblock="0",
                                                            endblock="999999999",
                                                            sort='asc')
    erc20.append(result)
    print('len(result):', len(result))
    
#print(erc20)

#for item in erc20:
#    print(item)

结果:

Name 1
len(result): 44
Name 2
len(result): 1043
Name 3
len(result): 1
于 2021-05-29T14:31:52.377 回答