2016-08-02 46 views
0

我想写一个代码,将循环通过我有一个CSV文件,结合这两个数据(在这种情况下“Rep “和”Entry“),然后为每个返回的值创建QR码...我已经计算出如何制作QR码以及如何合并数据,但我无法弄清楚循环以及如何将所有这些一起。感谢您的任何帮助!如何通过CSV循环,并使用每个行字符串来创建一个二维码 - PYTHON

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") 

回答

0

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

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 
+0

你为什么要创建'qr'的新实例为每一个循环? – JClarke

+0

没有阅读文档我不知道'add_data'方法是覆盖旧信息还是连接。如果我每次创建新实例时都不必担心陈旧数据的可能性。 –

+0

我明白,但这不会是一个理想的方式。如果需要,你应该清除陈旧的数据。 – JClarke

0
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)) 

我添加枚举,所以你也可以得到你的文件名索引号,而不是有多个test.jpg

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

相关问题