我正在开发一个面部识别和考勤系统,该系统将姓名和时间写入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()
-检查“is in”比使用列表快得多相关问题 更多 >
编程相关推荐