我正在尝试从比赛 ID 中提取球队和球员统计数据列表。对我来说一切看起来都很好,但是当我运行我的“for循环”来调用函数来提取我想要的统计信息时,它只是从我的 try/except 块中打印错误。我对 python 还是很陌生,这是我的第一个项目,所以我在过去几天里尝试了所有我能想到的东西,但没有运气。我相信问题出在我的实际拉取请求上,但我不确定我是否也在使用我发现的 GitHub 库来帮助我使用 Riot API,同时我更改和更新它以获得我想要的信息。
def get_match_json(matchid):
url_pull_match = "https://{}.api.riotgames.com/lol/match/v5/matches/{}/timeline?api_key={}".format(region, matchid, api_key)
match_data_all = requests.get(url_pull_match).json()
# Check to make sure match is long enough
try:
length_match = match_data_all['frames'][15]
return match_data_all
except IndexError:
return ['Match is too short. Skipping.']
然后这是 stat 函数的简化版本:
def get_player_stats(match_data, player):
# Get player information at the fifteenth minute of the game.
player_query = match_data['frames'][15]['participantFrames'][player]
player_team = player_query['teamId']
player_total_gold = player_query['totalGold']
player_level = player_query['level']
代码中还有一些其他功能,但我不确定它们是否也有故障,或者是否需要它们来找出错误。但这里是调用请求并定义变量“matchid”的“for循环”
for matchid_batch in all_batches:
match_data = []
for match_id in matchid_batch:
time.sleep(1.5)
if match_id == 'MatchId':
pass
else:
try:
match_entry = get_match_row(match_id)
if match_entry[0] == 'Match is too short. Skipping.':
print('Match', match_id, "is too short.")
else:
match_entry = get_match_row(match_id).reshape(1, -1)
match_data.append(np.array(match_entry))
except KeyError:
print('KeyError.')
match_data = np.array(match_data)
match_data.shape = -1, 17
df = pd.DataFrame(match_data, columns=column_titles)
df.to_csv('Match_data_Diamond.csv', mode='a')
print('Done Batch!')
由于这是我的第一个项目,任何帮助将不胜感激,因为我找不到关于这个特定主题的任何信息,所以我真的不知道在哪里可以了解为什么它不能靠我自己工作。