如何使用python创建和编写递增的.png文件?

2024-06-16 14:59:21 发布

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

我现在正在尝试为字典的键生成二维码。如果我只为一个键生成二维码,那就没有问题了。但是,如果我尝试自动化这个过程,增加每个键的文件号,我只会生成空的.png文件

对于一次一个二维码,我的代码可以工作,如下所示: 进口cv2 导入操作系统 导入QR码

test = {
    1: { "gene": "aox1a", "construct": "2-23", "line": "8" },
    2: { "gene": "aox1a", "construct": "2-23", "line": "8 " },
    3: { "gene": "aox1a", "construct": "2-23", "line": "8" }
}


data = "This is plant 1", test[1]
# output file name
filename = "plant1.png"
# generate qr code
img = qrcode.make(data)
# save img to a file
img.save(filename)

像这样,我生成了一个包含所需二维码的.png文件,上面写着:“这是plant 1',{'gene':'aox1a'…}) 如果我尝试使用循环实现自动化,它看起来是这样的:

for i in test.keys():
    data=test[i]
    print(test[i])
    i = 0
    while os.path.exists("pic%s.png" % i):
        i += 1
    filename = open("pic%s.png" % i, "w")

这就是我的二维码工作的地方。但是,我不知道我怎么能不选择那些文件并把我的二维码放进去。 如果我尝试像以前一样添加图像,请使用:

img = qrcode.make(data)
# save img to a file
img.save(filename)

它会告诉我“write()参数必须是str,而不是bytes”

有人能帮忙吗?已经谢谢了


Tags: 文件testimgdatapngsavelinefilename
1条回答
网友
1楼 · 发布于 2024-06-16 14:59:21

在第一个代码中,文件名是一个字符串。在for循环中,打开文件并使filename成为文件的句柄。这对我很有用:

import os import qrcode

test = {
    1: { "gene": "aox1a", "construct": "2-23", "line": "8" },
    2: { "gene": "aox1a", "construct": "2-23", "line": "8 " },
    3: { "gene": "aox1a", "construct": "2-23", "line": "8" } }

for i in test.keys():
    data = test[i]
    print(test[i])
    i = 0
    while os.path.exists("pic%s.png" % i):
        i += 1
    filename = "pic%s.png" % i
    img = qrcode.make(data)
    img.save(filename)

相关问题 更多 >