Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2017, 20:49   #1
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию matplotlib, numpy и чтение / запись CSV-фалов

Столкнулся с такой проблемой:
Читаю файлы в формате CSV функцией csv2rec() и проверяю обращения к элементам массива. Это работает нормально.
Пишу этот же массив в файл функцией rec2csv().
Выдается ошибка:TypeError: a bytes-like object is required, not 'str'.
Содержимое читаемого файла:
Код:
avtor,title,year,note
Доля П.Г.,Введение в научный Python,2016,"Классы, оконные приложения"
Travis E.,Guide to NumPy,,Руководство
Мусин Д.,Самоучитель Python,2016,Язык Python
Листинг:
Код:
import numpy as np
import matplotlib.mlab as mlab
#
# читаем данные из CSV-файла
fin = 'C:\\Python36\\Work\\books.csv' 
with open(fin, 'rt') as infile:
    mas = mlab.csv2rec(fin, names = None)
#
# Пишем массив в csv-файл
fout = 'C:\\Python36\\Work\\books1.csv'
with open(fout, 'wb') as outfile:
    mlab.rec2csv(mas, outfile)
Если заменить режим открытия файла для записи: 'wb' --> 'wt', то файл создается, но с ошибкой. В конце строк комбинация символов CR CR LF.
По всей видимости должен остаться только CR, а CRLF добавляются поскольку пишется текстовый файл.
Получается, что необходимо изменить тип массива mas.
Как это надо сделать?
Поиск в сети и перевод документации дали нулевой результат.
PS: NumPy постольку, поскольку массив mas - это:
dtype((numpy.record, [('avtor', '<U9'), ('title', '<U25'), ('year', '<i4'), ('note', '<U26')]))
и с ним предполагается выполнять операции.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 26.06.2017, 10:15   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Ответ получен.
Проблема в реализации самой функции rec2csv().
Посоветовали установить pandas.
Pandas установил. В нем есть реализация массивов записей, как и в numpy (numpy в составе pandas).

Будем обучаться дальше ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
NumPy и чтение/запись массива в файл ViktorR Python 8 08.09.2018 15:40
Python.matplotlib (Отобразить доверительные интервалы функции на графике) PIA111 Python 0 10.02.2016 19:11
чтение и запись в сокеты Voipp Общие вопросы по Java, Java SE, Kotlin 1 05.10.2013 03:23
чтение txt фалов Mihanches Общие вопросы Delphi 3 17.09.2010 11:42
Чтение фалов как текстовых Gerzs Общие вопросы Delphi 17 10.10.2009 14:34