我正在为非营利募捐人创建一个简短的程序,以验证客人入住时的门票号码,以确保没有重复的门票可以兑换。我在Windows 10机器上运行Python 3.4.3。一旦该计划完成,它将用于筹款活动中带有触摸屏的Raspberry Pi。TypeError:'DictWriter'对象不可迭代
我已经尝试了几种不同的方法来构建列表,保存它并搜索重复项。理想情况下,列表将存储在CSV文件中,但纯文本或其他格式也可以。
由于循环函数,您可以帮助我处理跟踪错误(TypeError:'DictWriter'对象不可迭代),以检查票据#与存储在文件中的列表,以确保没有重复票据被兑换?
非常感谢您的帮助!
version = "v1.4"
fname="tickets.csv"
import csv
import datetime
import os.path
print("\nWelcome to TicketCheck", version)
extant = os.path.isfile(fname)
with open(fname, 'a', newline='') as csvfile:
fieldnames = ['ticketid', 'timestamp']
ticketwriter = csv.DictWriter(csvfile, fieldnames=fieldnames)
if extant == False:
ticketwriter.writeheader()
while True:
ticket = ""
print("Please enter a ticket # to continue or type exit to exit:")
ticket = str(input())
if ticket == "":
continue
if ticket == "exit":
break
print("You entered ticket # %s." % (ticket))
print("Validating ticket...")
for row in ticketwriter:
if row[0] == ticket:
print("\n\n\n===== ERROR!!! TICKET # %s ALREADY CHECKED IN =====\n\n\n" % (ticket))
continue
time = datetime.datetime.now()
print("Thank you for checking in ticket # %s at %s \n\n\n" % (ticket, time))
print("Ticket is now validated.")
ticketwriter.writerow({'ticketid': ticket, 'timestamp': time})
csvfile.flush()
continue
csvfile.close()
print("All your work has been saved in %s.\n Thank you for using TicketCheck %s \n" % (fname, version))