Можно также попытаться использовать Мышь. Свойство DirectlyOver для получения самого верхнего элемента, который находится под мышью.
Unlike the memory files implemented by the StringIO module, those provided by [cStringIO] are not able to accept Unicode strings that cannot be encoded as plain ASCII strings.
If possible, use StringIO instead of cStringIO.
Вы можете обернуть объект StringIO в объект codecs.StreamReaderWriter
для автоматического кодирования и декодирования Unicode.
Вот так:
import cStringIO, codecs
buffer = cStringIO.StringIO()
codecinfo = codecs.lookup("utf8")
wrapper = codecs.StreamReaderWriter(buffer,
codecinfo.streamreader, codecinfo.streamwriter)
wrapper.writelines([u"list of", u"unicode strings"])
буфер
будет заполнены байтами в кодировке utf-8.
Если я правильно понимаю ваш случай, вам нужно будет только написать, так что вы также можете сделать:
import cStringIO, codecs
buffer = cStringIO.StringIO()
wrapper = codecs.getwriter("utf8")(buffer)