我有一个Python脚本,我认为它最初工作正常;它基本上为组织创建一个文件夹,抓取csv,并使用该csv的第一列创建QR码(与组织名称连接),它存储在' image'该组织的文件夹。
这是脚本:
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
足够我的目的,只需在脚本中使用人员的主ID创建一个基于org变量的QR码。如果您运行该脚本,一切都应该运行良好 - 除了当您实际读取QR码时,所有这些ID都聚合在一起而不是单独聚合。
这是来自文件的第一个QR码(ID:813),它返回一个完美的结果(1234-813)。但它只返回正确的代码,因为它是第一个:
这里的最后一个(ID:915)似乎也错误地包含了所有其他ID(你也可以从尺寸中看到):
当您阅读此代码时,返回的是" 1234-8131234-641234-8711234-7281234-9801234-1181234-511234-9021234-915"而不是应该是什么:" 1234-915"。
希望这只是我在脚本中找不到的一个愚蠢的错误。有人可以帮忙吗?谢谢!
答案 0 :(得分:0)
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()
对象。