【问题标题】:How to create and write incrementing .png files with python?如何使用 python 创建和编写递增的 .png 文件?
【发布时间】:2021-04-23 20:55:19
【问题描述】:

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

一次只有一个二维码,我的代码可以正常工作,如下所示: 导入简历2 导入操作系统 导入二维码

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,而不是字节'。

有人可以帮忙吗?已经谢谢了!

【问题讨论】:

标签: python


【解决方案1】:

在您的第一个代码中,文件名是一个字符串。在 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)

【讨论】:

  • 嗨@N.Brue,因为答案解决了您的问题,请考虑通过单击复选标记接受它。这是 stackoverflow 上的习惯,向更广泛的社区表明您已经找到了解决方案,并为回答的人和您自己提供了一些声誉,并告知其他人他们不需要检查问题。很高兴它成功了!
猜你喜欢
  • 2018-01-18
  • 2013-08-01
  • 2014-08-06
  • 2011-06-22
  • 2021-04-15
  • 1970-01-01
  • 2021-11-18
  • 2022-01-07
  • 2022-01-01
相关资源
最近更新 更多