【问题标题】:How to Loop through a CSV and use each Row String to Create a QR Code - PYTHON如何遍历 CSV 并使用每个行字符串创建 QR 码 - PYTHON
【发布时间】:2025-12-14 23:15:02
【问题描述】:

我正在尝试编写一个循环遍历我拥有的 CSV 文件的代码,组合这两条数据(在本例中为“Rep”和“Entry”),然后为每个返回值创建一个 QR 码。 . 我已经弄清楚如何制作二维码以及如何组合数据,但我无法弄清楚循环以及如何将所有这些放在一起。感谢您的帮助!

import csv
import qrcode

with open('SLS_labels.csv') as csvfile:
    fieldnames= ["Rep", "Entry"]
    reader= csv.reader(csvfile)

    for row in reader:
        labeldata = row[0] + row[1]
        print labeldata


    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        box_size=1,
        border=4,
    )

    qr.add_data(labeldata)
    qr.make(fit=True)

    img = qr.make_image()
    img.save("test.jpg")

【问题讨论】:

    标签: python python-2.7 loops csv qr-code


    【解决方案1】:

    您将要在 for 循环中创建您的标签:

    for row in reader:
        labeldata = row[0] + row[1]
    
        qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        box_size=1,
        border=4)
    
        qr.add_data(labeldata)
        qr.make(fit=True)
    
        img = qr.make_image()
        img.save(labeldata+".jpg") #this assumes your label data would make a good file name
    

    或者,您可以将所有 labeldata 添加到列表中并对其进行迭代...

    labeldata = []
    for row in reader:
        labeldata += [row[0] + row[1]]
    ...
    for label in labeldata:
        #make labels
    

    【讨论】:

    • 为什么要为每个循环创建一个 qr 的新实例?
    • 不阅读文档我不知道add_data 方法是覆盖旧信息还是连接。如果我每次都创建一个新实例,我不必担心数据过期的可能性。
    • 我明白这一点,但这无论如何都不是理想的方式。如果需要,您应该只清除过时的数据。
    【解决方案2】:
    import csv
    import qrcode
    
    with open('SLS_labels.csv') as csvfile:
        fieldnames= ["Rep", "Entry"]
        reader= csv.reader(csvfile)
    
        qr = qrcode.QRCode(
            version=1,
            error_correction=qrcode.constants.ERROR_CORRECT_L,
            box_size=1,
            border=4,
        )
    
        for i, row in enumerate(reader):
            labeldata = row[0] + row[1]
            print labeldata
    
            qr.add_data(labeldata)
            qr.make(fit=True)
    
            img = qr.make_image()
            img.save("test{}.jpg".format(i))
    

    我添加了 enumerate,因此您还可以获得文件名的索引号,而不是多个 test.jpg

    如果要清除添加的数据,可以在img.save()之后调用qr.clear()

    【讨论】:

      最近更新 更多