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 через диспетчер, а не то, что вы сейчас передаете.