Как сделать cStringIO прозрачным для другой функции, которая ожидает настоящий локальный файл - PullRequest
2 голосов
/ 12 октября 2010

У меня возникла следующая проблема: КОД А сейчас работает .. Я локально сохраняю файл png с именем chart.png, а затем загружаю его в проприетарную функцию (к которой у меня нет доступа).

Однако в КОДЕ B я пытаюсь использовать cStringIO.StringIO (), чтобы мне не приходилось записывать файл "chart.png" на диск. Но я не могу найти способ передать его в ppprietaryfunction, потому что он ожидает реального имени файла, например «chart.png» (похоже, он даже использует функцию split для определения расширения).

КОД А (код работает прямо сейчас):

file = "chart.png"
pylab.savefig(file, format='png')
 a = proprietaryfunction.add(file)

КОД B (что я пытаюсь сделать - и не работает):

file = cStringIO.StringIO()
pylab.savefig(file, format='png')
 a = proprietaryfunction.add(file)

Как сделать использование cStringIO.StringIO () прозрачным для проприетарной функции? В любом случае я могу эмулировать виртуальную файловую систему в памяти для этого?

1 Ответ

3 голосов
/ 13 октября 2010

Вероятно, нет, но всегда есть временный файл , если вам нужен "чистый" обходной путь ...

...