Я разбираю файл усов в строку, и после этого я хочу обработать эту строку с помощью модуля csv. Для этого я создаю файл, подобный интерфейсу строки, используя StringIO. Модуль CSV жалуется с:
_csv.Error: line contains NULL byte
Итак, я сделал простой тест:
import pystache
from cStringIO import StringIO
txt = pystache.render('Hello {{name}}', {'name' : 'Steve'})
f = StringIO(txt)
data = f.read()
print txt.find('\x00')
print data.find('\x00')
print txt.count('\x00')
print data.count('\x00')
Который производит:
-1
1
0
33
Каким-то образом объект StringIO вставляет пустые байты. Этого не происходит, если я использую строку, которая не была предварительно обработана с помощью pystache:
from cStringIO import StringIO
txt = "Hello Steve"
f = StringIO(txt)
data = f.read()
print txt.find('\x00')
print data.find('\x00')
print txt.count('\x00')
print data.count('\x00')
Результат, как и ожидалось:
-1
-1
0
0
В чем может быть проблема?