如何为批量保存的条码文件添加顺序编号后缀避免覆盖?
解决方案
你的代码存在两个核心问题:
input()获取的quantity是字符串类型,直接和整数比较永远不成立,导致分支逻辑完全失效;- 仅创建了一个条码实例,且重复使用相同文件名保存,必然会覆盖已有文件。
用 for 循环可以简洁实现批量生成需求,同时处理文件名的顺序后缀,修正后的代码如下:
from barcode import EAN14 # 获取条码编号和生成数量,将数量转为整数 number = input("Enter the barcode ") try: quantity = int(input("Enter the quantity ")) except ValueError: print("请输入有效的数字作为生成数量") exit() # 循环生成指定数量的条码 for i in range(quantity): # 创建条码实例 my_code = EAN14(number) # 根据循环次数生成文件名:第1个用原编号,后续添加(1)(2)...后缀 filename = number if i == 0 else f"{number}({i})" # 保存文件,barcode库会自动添加.svg后缀 my_code.save(filename)
代码说明:
- 先将
quantity转为整数,同时增加异常处理,避免输入非数字导致程序崩溃; - 使用
for循环遍历索引,根据索引生成差异化文件名,避免覆盖; - 若你需要生成连续递增的条码编号(而非相同条码不同文件名),可修改循环内的条码实例创建逻辑,示例如下:
from barcode import EAN14 number = input("Enter the starting barcode ") try: quantity = int(input("Enter the quantity ")) except ValueError: print("请输入有效的数字作为生成数量") exit() # 转换为整数方便递增,同时补零保证符合EAN14长度要求 start_number = int(number) for i in range(quantity): current_number = str(start_number + i).zfill(14) my_code = EAN14(current_number) # 文件名可选择用当前条码编号,或保留起始编号加后缀 filename = current_number # 也可改为 f"{number}({i})" my_code.save(filename)
内容的提问来源于stack exchange,提问作者tag_ur_pregnant
相关产品推荐
相关产品推荐

