使用set.add时,Set不会更新,并且脚本就像是继续执行一样

问题描述

这是我正在测试的完整代码。它从Trello中获取一张牌列表,然后遍历每张牌上的操作列表,以查找在最后一天移动的牌。然后,从这些卡片中收集统计信息。

但是,当成员set()中未列出成员时,脚本将执行members.add()将名称添加到set()中。当我的脚本到达那里时,它将执行members.add(),但它不会更新成员,而是会更新到for循环中的下一项。

我真的对此感到迷惑,没有在这里和Google上找到与该问题接近的任何东西。我尝试了一个简化的版本,基本上只有两个for循环,没有复杂的if语句,但是它起作用了,但是我没有从该测试中得出任何好的结论。

谢谢

from reporting import report_init,report,Tech
from trello import TrelloApi
import logging
from config import __config__
import os
from datetime import datetime,timedelta


logging.basicConfig(filename=f"debug_{datetime.strftime(datetime.Now(),'%Y-%m-%d_%H-%M-%s')}.log",level=logging.DEBUG,format='%(asctime)s - %(levelname)s - %(message)s')
log = logging.getLogger(__name__)
log.info(f"{__name__} just started.")
studios_dic = __config__()
tr = TrelloApi(apikey=os.environ["TRELLO_API_KEY"],token=os.environ["TRELLO_API_TOKEN"])
arg_list = ["[DIGI]","[Print]","[IC]","[CS]","[Frame]","[Cadre]","[Canvas]","[Canevas]","[Plexi]"]
key_list = ["# Digitals","# Prints","# IC","# CS","# F","# C","# P"]

yesterday = (datetime.strptime(str(datetime.Now())[:-7],'%Y-%m-%d %H:%M:%s') - timedelta(days=1)).isoformat()
current_list_cards = tr.lists.get_card_filter(filter="open",idList=os.environ["TRELLO_LIST_ID"])
cards_completed = set()
members = set()
members_stats = []
for card in current_list_cards:
    card_checklist = tr.cards.get_checklist(card_id_or_shortlink=card["id"])
    card_actions = tr.cards.get_action(card_id_or_shortlink=card["id"])
    for action in card_actions:
        if action["date"] > yesterday and action["type"] == "updateCard":
            print("Action Could be logged if it marked order as completed")
            try:
                if (action["data"]["listAfter"]["name"] == "Commandes Faites" or action["data"]["listAfter"]["name"] == "Check") and action["data"]["listBefore"]["name"] == "Commandes en Retouche":
                    print("Action should be logged if members exists")
                    cards_completed.add(action["data"]["card"]["name"])
                    if action["memberCreator"]["fullName"] in members:
                        print("Member Exists")
                        for member in members_stats:
                            if member.name == action["memberCreator"]["fullName"]:
                                for check in card_checklist:
                                    log.debug(f"Adding items in checklist to {action['memberCreator']['fullname']}")
                                    for item in check["checkItems"]:
                                        log.debug(f"{item} - {item['name']}")
                                        for i,arg in enumerate(arg_list):
                                            if arg in item["name"]:
                                                member.stats[key_list[i]] += 1
                    else:
                        print("Creating Member")
                        members.add(action["memberCreator"]["fullname"])  # line that doesn't work
                        members_stats.append(Tech(action["memberCreator"]["fullname"]))
                        for check in card_checklist:
                            log.debug(f"Adding items in checklist to {action['memberCreator']['fullname']}")
                            for item in check["checkItems"]:
                                log.debug(f"{item} - {item['name']}")
                                for i,arg in enumerate(arg_list):
                                    if arg in item["name"]:
                                        member.stats[key_list[i]] += 1
            except KeyError as ke:
                log.exception(f"{ke}")
                continue

解决方法

这是一个简单的KeyError。在某些地方,键fullName被拼写为fullname。关闭这个。