Python错误地从CSV D创建聚集的QR码

2024-10-02 20:41:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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

那个测试.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

就我的目的而言,只需根据脚本中的org变量创建一个QR码,并使用该人员的主要ID即可。如果运行该脚本,则所有操作都应正常进行--只是当您实际读取QR码时,所有这些ID将聚合在一起,而不是单独进行。你知道吗

这是文件中返回完美结果(1234-813)的第一个二维码(ID:813)。但它只返回正确的代码,因为它是第一个:

here

最后一个(ID:915)似乎也错误地合并了所有其他ID(从大小也可以看出):

enter image description here

当您阅读此代码时,返回的是“1234-8131234-641234-8711234-7281234-9801234-1181234-511234-9021234-915”,而不是应该的“1234-915”。你知道吗

希望这只是一个愚蠢的错误,我不能在我的脚本中找到。有人能帮忙吗?谢谢您!你知道吗


Tags: csvcsvfileorgimageimport脚本idos
1条回答
网友
1楼 · 发布于 2024-10-02 20:41:51

似乎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()对象。你知道吗

相关问题 更多 >