用Python读写磁卡读写器输入

2024-10-04 03:24:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我用磁卡读卡器读取磁卡的输入。卡片有三个磁道,但每个磁道上的数据都是相同的。当我写一个文件时,我先写一个csv,然后用它写一个文件。问题是,在读取每个磁道之后,会输入一个返回字符,这样我正在运行的while循环对每个刷卡读写相同的数据三次。有没有什么方法可以让前两个返回为空,这样我只写一次数据,或者有没有其他方法可以让我只得到一次文本,每一张卡片只写一次数据?如果你对此有任何疑问,请告诉我。我试着说得尽可能清楚。我还将包括代码。在

    #Card Reader
    import getpass
    import datetime
    import csv
    import os
    full_date = str(datetime.datetime.now())
    short_date = full_date[5:10]
    print(short_date)
    while True:
        while True:
            try:
                ID = getpass.getpass(prompt = 'Please swipe your ID card. ')
                if os.path.exists('.\attendance.csv'):
                    student_number = open('.\attendance.csv', 'a')
                    student_number.write(ID[1:10] + '\n')
                    print('')
                else:
                    student_number = open('.\attendance.csv', 'w')
                    student_number.write(ID[1:10] + '\n')
                    print('')
            except keyboardInterrupt:
                break

Tags: 文件csv数据importidnumberdatetimedate
1条回答
网友
1楼 · 发布于 2024-10-04 03:24:25

您可以使用计数器来跟踪返回值的次数。在

counter = 0
while True:
    ID = getpass.getpass(prompt = 'Please swipe your ID card.')
    if counter < 3:
        counter += 1
    else:
        counter = 0
        if os.path.exists('.\attendance.csv'):
            student_number = open('.\attendance.csv', 'a')
            student_number.write(ID[1:10] + '\n')
            print('')
        else:
            student_number = open('.\attendance.csv', 'w')
            student_number.write(ID[1:10] + '\n')
            print('')

由于您正在开发一个读卡器,所以可以安全地假设另一次刷卡不会干扰柜台,并且每个学生的出勤记录只写一次。在

相关问题 更多 >