Python批量生成QR二维码仅输出1个文件且命名异常问题求助
批量生成二维码命名错误修复方案
错误原因
- 代码中
img.save(lista+".png")行逻辑错误:你将存储所有数据的完整列表lista作为文件名前缀,每次循环都使用同一个错误文件名,新生成的图片会覆盖旧文件,最终仅保留1个文件 df.values.tolist()返回的每行数据row为列表类型,直接作为文件名会出现格式异常,需要先处理为合法字符串
修正后完整代码
import pandas as pd import qrcode df = pd.read_excel("Manpower.xls") df = df.drop(range(31,389)) lista = df.values.tolist() # 文件名非法字符替换映射 illegal_chars = ['/', '\\', ':', '*', '?', '"', '<', '>', '|'] for row in lista: # 处理文件名:如果行内只有一个元素用row[0],多个元素可以用'-'.join([str(i) for i in row])拼接 file_name = str(row[0]) for c in illegal_chars: file_name = file_name.replace(c, '_') qr = qrcode.QRCode(version=1, box_size=2) qr.add_data(row) qr.make(fit=True) img = qr.make_image() img.save(f"{file_name}.png")
调整说明
- 如果你的Excel单行包含多个字段需要拼接为文件名,可以把
str(row[0])替换为'-'.join([str(i) for i in row]),会用短横线拼接所有字段作为文件名 - 代码中已经加入了Windows系统文件名非法字符替换逻辑,避免特殊字符导致保存失败
内容的提问来源于stack exchange,提问作者Aldo G-4144
相关产品推荐
相关产品推荐

