Как изменить код для для разных баркодов

import barcode
ean = barcode.get('ean13', '3234567891026')
ean.get_fullcode()
filename = ean.save('ean13')
options = dict(compress=True)
filename = ean.save('ean13_', options)

При замене номера во 2 -й строке, например, на 1(‘3234567891025’), все равно получается старый баркод.

Дело в том, что меняете последнюю цифру.

Смотрите исходник, там чексумму по умолчанию пишет в 13-й символ.

… и если вам все-таки надо именно последнюю цифру менять, то по-моему там баг даже если указать опцию no_checksum: оно сначала обрезает до 12 (ean = ean[: self.digits]), а потом ищет в этом 13-й символ (ean[self.digits] if len(ean) > self.digits else 0).

Будет всегда 0:

>>> barcode.get('ean13')('32345678910299', None, True)
<EuropeanArticleNumber13('3234567891020')>

Так что пишите баг-репорт :slight_smile: https://github.com/WhyNotHugo/python-barcode/issues

… который похоже уже написан кем-то год назад )

Правильно ли я понял, что можно менять только 12 первых цифр?

Смотря что и для чего надо :man_shrugging:
В 13-й видимо должна быть чексумма, надо читать спецификацию этого EAN и того, для чего вам он нужен.

С параметром no_checksum эта библиотека по идее дает задавать все 13 самому, но там баг описанный выше. (автор начал работать над исправлением, наверно скоро будет доступно, или можно взять версию из того Pull Request’а)