Держите содержимое в памяти перед записью в файл - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь использовать библиотеку viivakoodi здесь для создания штрих-кода из строки. Я хочу читать эти данные в памяти, а не записывать их в файл. Есть ли способ сделать это?

import barcode
EAN = barcode.get_barcode_class('ean13')
ean = EAN(u'5901234123457', writer=ImageWriter())

После того, как я запустил это в python, после печати ean.writer.__dict__

{'_callbacks': {'finish': <bound method ImageWriter._finish of <barcode.writer.ImageWriter object at 0x7f0894072d90>>,
  'initialize': <bound method ImageWriter._init of <barcode.writer.ImageWriter object at 0x7f0894072d90>>,
  'paint_module': <bound method ImageWriter._paint_module of <barcode.writer.ImageWriter object at 0x7f0894072d90>>,
  'paint_text': <bound method ImageWriter._paint_text of <barcode.writer.ImageWriter object at 0x7f0894072d90>>},
 '_draw': None,
 '_image': None,
 'background': u'white',
 'center_text': True,
 'dpi': 300,
 'font_size': 10,
 'foreground': u'black',
 'format': u'PNG',
 'module_height': 10,
 'module_width': 10,
 'quiet_zone': 6.5,
 'text': u'',
 'text_distance': 5}

я получаю следующее Я могу прочитать байты, которые будут записаны в файл в переменной!

После записи байтов в файл, но я хочу прочитать это в памяти вместо записи:

ean.save('ean13_barcode')

1 Ответ

0 голосов
/ 02 мая 2020

В примерах библиотеки упоминается, что вы можете создать (похожий на файл, но в памяти) StringIO объект и записать в него ean.

import barcode
from StringIO import StringIO  # Python 2
from io import StringIO  # Python 3

EAN = barcode.get_barcode_class('ean13')
ean = EAN(u'5901234123457', writer=ImageWriter())

fp = StringIO()
ean.write(fp)

Затем вы можете вызвать ean.getvalue() для доступа к значению объекта.

...