0

我正在使用磁卡读卡器读取磁卡的输入。这些卡有三个轨道,但每个轨道在每个轨道上都包含相同的精确数据。当我刷卡时,第一个轨道被写入一个变量,然后写入一个 csv 文件供以后使用。问题是,在读取每个磁道后,输入一个返回字符,以便我正在运行的 while 循环为每张刷卡读取和写入相同的数据 3 次。有什么方法可以让前两个返回 null 以便我只获得一次写入的数据,或者有没有其他方法可以这样做,以便我只获得一次文本和为每张卡写入一次的数据? 如果您对此有任何疑问,请告诉我。我试图尽可能清楚地表达它。我还将包括代码。

    #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
4

1 回答 1

1

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

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('')

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

于 2015-09-01T18:29:50.220 回答