python - 如何使用 python 创建和编写递增的 .png 文件?
问题描述
我目前正在尝试为字典的键生成二维码。如果我只为一个键尝试,那根本没问题。但是,如果我尝试自动化该过程,为每个键增加我的文件编号,我只会生成空的 .png 文件。
对于一次一个二维码,我的代码可以正常工作,如下所示: import cv2 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" }
}
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 文件,上面写着:“这是植物 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,而不是字节”。
任何人都可以帮忙吗?已经谢谢了!
解决方案
在您的第一个代码中,文件名是一个字符串。在 for 循环中,您打开文件并使文件名成为文件的句柄。这对我有用:
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)
推荐阅读
- php - 如何在多维数组中调用关联数组键?
- oracle - 使用序列构建 Oracle 视图
- css - 正文中断布局上的等宽字体
- java - 使用 Java 和 Python 的 uuencoded 文件之间的区别
- sql-server - 如何根据 json 中的 id 从表中删除行
- php - 使用 PHP SoapClient 将多个值发送到同一个字段
- python - AttributeError:模块“pydotplus”没有属性“节点”
- python - 未定义字符的 Unicode 编码错误
- django - Django - 空表单无法保存在数据库中
- c++ - 使用命名空间的 QT 测试