使用Python读写磁卡读卡器输入

时间:2015-09-01 18:12:22

标签: python csv magnetic-cards cardreader

我正在使用磁卡读卡器读取磁卡的输入。这些卡有三个轨道,但每个轨道在每个轨道上保存相同的精确数据。当我刷卡时,第一个轨道被写入变量,然后写入csv文件供以后使用。问题是在读取每个轨道后,输入一个返回字符,以便我运行的while循环为每个刷卡读取和写入相同的数据三次。是否有任何方法可以使前两个返回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

1 个答案:

答案 0 :(得分: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('')

由于您正在开发读卡器,因此可以安全地假设另一张刷卡不会干扰计数器,并且每位学生的出勤时间只会写一次。