Я использую устройство чтения магнитных карт для чтения ввода с магнитных карт. Карты имеют три дорожки, но каждый трек содержит одинаковые точные данные на каждой дорожке. Когда я сажу карточку, первый трек записывается в переменную, а затем записывается в файл csv для последующего использования. Проблема заключается в том, что после считывания каждой дорожки вводится символ возврата, так что цикл while, который я запускаю, считывает и записывает одни и те же данные три раза для каждой карты. Есть ли способ, по которому я могу сделать первые два значения null, так что я получаю только данные, написанные один раз, или есть какой-либо другой способ, которым я могу это сделать, так что я получаю текст один раз, а данные записываются один раз для каждой карточки ? Если у вас есть какие-либо вопросы по этому поводу, дайте мне знать. Я попытался сказать это, насколько это возможно. Я также включу код.Чтение и запись ввода магнитных карт с помощью Python
#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
Почему двойные циклы 'while True'? – Juxhin
У меня было больше кода между ними в какой-то момент, но он вытащил его и просто не поймал. Я собирался убрать его позже. Поэтому нет причин для этого. Спасибо, что поймали это! – law10
Если значения идентичны и имеют одинаковую длину, почему бы не взять список значений и не сломать после индекса 'n', где' n' - длина требуемого значения? – Juxhin