You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python EAN13条形码生成器无法生成条码问题求助

EAN13条形码生成器代码错误排查与修复

代码中的核心错误

  • 随机码生成逻辑混乱:原代码的for循环嵌套while循环会无限制向codes中添加元素,导致列表长度远超预期的100个。正确逻辑应是重复生成随机码,直到收集到100个不重复的数值。
  • EAN13构造参数错误:创建条形码对象时误用"{codes}"字符串,实际需要传入当前循环的单个码值,且必须是字符串类型。另外,EAN13的最后一位是校验位,随机生成的13位数字大概率不符合校验规则,建议传入12位数字,由模块自动计算校验位。
  • 条形码显示方式错误:原代码将列表当作函数调用(barcodes(0)),正确的列表索引应为barcodes[0];直接打印EAN13对象无法显示条形码,需调用专用方法输出。

修正后的完整代码

from barcode import EAN13
from random import randint

codes = []
barcodes = []

# 生成100个不重复的12位数字字符串
while len(codes) < 100:
    # 生成12位随机整数,范围覆盖所有12位数字
    code = randint(100000000000, 999999999999)
    code_str = str(code)
    if code_str not in codes:
        codes.append(code_str)

# 创建EAN13条形码对象(模块自动添加校验位)
for code_str in codes:
    barcode = EAN13(code_str)
    barcodes.append(barcode)

# 输出第一个条形码的ASCII格式
barcodes[0].print_ascii()

额外说明

  • 如果需要生成图片格式的条形码,需先安装pillow库(pip install pillow),然后调用barcode.save("barcode_filename")方法,默认会生成PNG文件。
  • 若坚持使用13位数字,需确保最后一位是正确的校验位,否则barcode模块会抛出校验错误。

内容的提问来源于stack exchange,提问作者Dante Crugnale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 16:55:25