如何解决使用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。关闭这个。