gpt4 book ai didi

python - 我正在开发一个面部识别和考勤系统,该系统将姓名和时间写入 CSV 文件,但同一个人被多次记录

转载 作者:行者123 更新时间:2023-12-04 08:00:06 25 4
gpt4 key购买 nike

我正在开发一个面部识别和考勤系统,它在 CSV 文件中写入姓名和时间。为了避免多次登录同一个人,我正在编写一个逻辑来检查姓名是否存在于考勤中已经登录,如果没有,则出勤率会丢失。但是尽管已经登录过一次,但会一遍又一遍地记录相同的名称,我无法理解问题。
这是代码片段:
在脸部下方绘制一个带有名称的标签

    cv2.rectangle(frame, (left, bottom - 35), (right, bottom), (0, 0, 255), cv2.FILLED)
font = cv2.FONT_HERSHEY_DUPLEX
cv2.putText(frame, name, (left + 6, bottom - 6), font, 1.0, (255, 255, 255), 1)
#markAttendance(name)
with open('ATTLOG.csv', "r+") as g:
myDatalist = g.readlines()
nameList=[]
for line in myDatalist:
entry = line.split(',')
nameList.append(entry[0])
if name not in nameList:
now=datetime.now()
dtString = now.strftime('%H:%M:%S')
g.writelines(f'\n{name},{dtString}')

最佳答案

您有一个逻辑错误:您将整个文件读入 nameList ,然后检查当前名称是否在 nameList 的第一项中.如果不是,则将其写入文件:如果您当前的名称稍后出现在 nameList 中,虽然你不应该写,但你会写。
您需要阅读整个文件,然后检查它是否是任何地方 在您的 nameList然后再决定要不要写。
为了检查你应该使用 set() - 检查“在”比使用列表要快得多。

already_in_file = set()
with open('ATTLOG.csv', "r") as g: # just read
for line in g:
already_in_file.add(line.split(",")[0])

# process your current entry:
if name not in already_in_file:
with open('ATTLOG.csv', "a") as g: # append
now = datetime.now()
dtString = now.strftime('%H:%M:%S')
g.writelines(f'\n{name},{dtString}')

关于python - 我正在开发一个面部识别和考勤系统,该系统将姓名和时间写入 CSV 文件,但同一个人被多次记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66516246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com