CSV формат для набора CtrlList

У меня есть TextCtrl, анализирующий семейный формат CSV, как:

"ID","X","Y","Z"
1,199,486.5,13
2,200,485.3,12

Я делаю регулярные выражения, а затем перезагружаю мой CtrlList, чтобы увидеть изменения. Вы конвертируете формат CSV в список, как:

[['ID', 'X', 'Y', 'Z'], ['2', '200', '485.3', '12'], ['1', '199', '486.5', '13']]

Пока я делаю это:

datafile = open(message, 'r')  # message receiever from dispatcher 
datareader = csv.reader(datafile) 
data = [] 
for row in datareader: 
    data.append(row)   # Traceback - IOError: [Errno 22] invalid mode ('r') or filename

Независимо от того, какой режим я использую, я все равно получаю эту ошибку. Мне нужно понять почему.

1 ответ

Решение

Если вы передаете объект, или строку, или список, или что-то еще, вы НЕ можете открыть его. Python open() предназначен для открытия файлов или файловых объектов. Лучше было бы обернуть объект сообщения внутри StringIO, чтобы преобразовать его в объект типа файла. Тогда вы сможете использовать модуль csv для его чтения. Или вы можете просто передать файловый объект самому модулю csv через диспетчер, а не то, что вы сейчас передаете.

Другие вопросы по тегам