Python从CSV数据错误地创建聚集QR码
问题描述:
我有一个Python脚本,我认为一开始工作正常;它基本上为一个组织创建一个文件夹,抓取一个csv,并使用该csv的第一列创建QR码(与组织名称连接),它存储在该组织的“图像”文件夹中。Python从CSV数据错误地创建聚集QR码
这里的脚本:
import csv
import qrcode
import os
org = "1234"
filename = '/Users/Ryan/Download/test.csv'
localfolder = '/Users/Ryan/Download/'+org
localimagefolder = localfolder+'/image'
if not os.path.exists(localfolder):
os.makedirs(localfolder)
if not os.path.exists(localimagefolder):
os.makedirs(localimagefolder)
with open(filename, 'rU') as csvfile:
next(csvfile, None) #skip header row
reader = csv.reader(csvfile, delimiter=',', dialect=csv.excel_tab)
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
for i, row in enumerate(reader):
labeldata = row[0] #Choose first column of data to create QR codes
print labeldata
qr.add_data(org+"-"+labeldata)
qr.make()
img = qr.make_image()
img.save(localimagefolder+"/"+org+"-"+labeldata+".png".format(i)) #Save image
的test.csv是真的只是一个三列的文件看起来像这样:
ID FirstName LastName
813 Aaron Zobrist
64 Adam Young
871 Alana Yarnell
728 Alexandra Wilson
980 Ali Williams
118 Alicia Wilderman
51 Alonzo Wilcox
902 Alphonso Whitehouse
915 Amanda Wharton
,我的目的只是创建基于QR码够好使用人员的主ID在脚本中的org变量上。如果您运行该脚本,一切都应该运行良好 - 除了当您实际阅读QR码时,所有这些ID都会汇总在一起而不是单独汇总。
这是文件中第一个QR码(ID:813),它返回完美结果(1234-813)。但它只是因为它是第一个返回正确的代码:
这里的最后一个(ID:915),这似乎不正确地将所有的其他ID,以及(你也可以从看大小):
当你读到这段代码,返回的是“1234-8131234-641234-8711234-7281234-98-1181234-511234-9021234-915”,而不是它应该是什么:“ 1234-915" 。
希望这只是一个愚蠢的错误,我无法在脚本中找到。任何人都可以帮忙吗?谢谢!
答
看来qr.add_data()
会将数据添加到您现有的qr
。它会更有意义构建你的代码如下:
import csv
import qrcode
import os
org = "1234"
filename = '/Users/Ryan/Download/test.csv'
localfolder = '/Users/Ryan/Download/'+org
localimagefolder = localfolder+'/image'
if not os.path.exists(localfolder):
os.makedirs(localfolder)
if not os.path.exists(localimagefolder):
os.makedirs(localimagefolder)
with open(filename, 'rU') as csvfile:
next(csvfile, None) #skip header row
reader = csv.reader(csvfile, delimiter=',', dialect=csv.excel_tab)
for i, row in enumerate(reader):
labeldata = row[0] #Choose first column of data to create QR codes
print labeldata
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
qr.add_data(org+"-"+labeldata)
qr.make()
img = qr.make_image()
img.save(localimagefolder+"/"+org+"-"+labeldata+".png".format(i)) #Save image
通过这样做,你将与你的每次循环新QRCode()
对象工作。