0 / 0 / 0
Регистрация: 22.12.2017
Сообщений: 4
|
||||||
1 | ||||||
Замена значений колонки в dbf файле22.12.2017, 16:23. Показов 5707. Ответов 8
Метки нет (Все метки)
Добрый день, начал изучать Python и возникла задача по работе привести в порядок номенклатурные позиции, которую попробовал решить с помощью Python 3.6
Кликните здесь для просмотра всего текста
>>> import renamef | Молочная продукция | | Молочная продукция | 18 | Компьютер | | Компьютер | 18 | Клавиатура | | Клавиатура | 18 | Мышь | | Мышь | 18 | Cd-rom | | Cd-rom | 18 | Измерителье7-12 | | Измерителье7-12 | 18 | Программное обе | | Программное обе | 18 | Система анализа | | Система анализа | 18 | Программа sm | | Программа sm | 18 | Рентгеновские т | | Рентгеновские т | 18 | Ксерокс Саnon | | Ксерокс Саnon | 18 | Исследовательск | | Исследовательск | 18 | Кондиционер lg | | Кондиционер lg | 18 | Комплект печног | | Комплект печног | 18 | Кальциметр коук | | Кальциметр коук | 18 | Компьютор атх | | Компьютор атх | 18 | компьютор athlo... | | Компьютор athlo | 18 Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> import renamef File "C:\pyton\renamef.py", line 64, in <module> rec._update_field_value(rec._recnum,pole,D[rec[pole]]) File "C:\pyton\lib\site-packages\dbf\ver_33.py", line 2706, in _update_field_value null_data[byte] &= 0xff ^ 1 << bit IndexError: array index out of range Первые 16 записей нормально заменились, в спойлере запускаю уже с измененным файлом. Причем словарь создался как надо, отдельно проверял, ключи соответствуют значениям поля. Файл содержит более 9000 строк Использую dbf-0.96.8-py3. Может кто-то подскажет или другой способ с помощью Python 3.6 заменить значения в поле, или что я неправильно делаю. …Да, я в курсе, что dbf прошлый век, можете об этом не упоминать.
0
|
22.12.2017, 16:23 | |
Ответы с готовыми решениями:
8
Проверить на наличие колонки в DBF файле Замена значений колонки Select и Update в dbf файле (условие нескольких значений: 5, 8, 15.) Поиск значений в файле и замена соответствующих в другом файле Как определить сумму значений одной колонки в рамках значений другой колонки? |
928 / 690 / 269
Регистрация: 10.12.2016
Сообщений: 1,699
|
|||||||||||||||||||||
23.12.2017, 13:21 | 3 | ||||||||||||||||||||
может проще экспорт в csv, и из него сделать что надо?
Добавлено через 21 минуту
по феншую
0
|
0 / 0 / 0
Регистрация: 22.12.2017
Сообщений: 4
|
||||||
23.12.2017, 13:51 [ТС] | 4 | |||||
проблема в том что любая запись >16 не меняется, если я меняю на любое число условие
описывая все поля файла? файл достаточно объемный, два десятка полей: { "RN", "C", 4, 0 },; { "PARENT_RN", "C", 4, 0 },; { "MNOB_RN", "C", 4, 0 },; { "TNWD_RN", "C", 4, 0 },; { "OKDP_RN", "C", 4, 0 },; { "OKPD_RN", "C", 4, 0 },; { "TAXGRP_RN", "C", 4, 0 },; { "GDGR_RN", "C", 4, 0 },; { "RN_MES", "C", 4, 0 },; { "NAME_NOM", "C", 240, 0 },; { "ARTIKUL", "C", 18, 0 },; { "ADD_CODE", "C", 15, 0 },; { "TYPE", "C", 1, 0 },; { "PRICE_TYPE", "I", 4, 0 },; { "PERADDPRIC", "N", 6, 2 },; { "COUNTRY_RN", "C", 4, 0 },; { "KLASS_PR", "C", 4, 0 },; { "PRIMECH", "M", 4, 0 },; { "_NullFlags", "0", 2, 0 } ;
0
|
928 / 690 / 269
Регистрация: 10.12.2016
Сообщений: 1,699
|
||||||
23.12.2017, 14:43 | 5 | |||||
сохраните структуру отдельно, при необходимости дублируете
я бы в sqlite3 хотя бы перегнал
0
|
0 / 0 / 0
Регистрация: 22.12.2017
Сообщений: 4
|
||||||
24.12.2017, 10:17 [ТС] | 6 | |||||
Вообще задача стоит так: из бд копирую файл с номенклатурными данными, хочу изменить поле артикул и потом заменить файл обратно. бд позволяет такое без потери работоспособности. Я только начинаю с Python работать до этого не занимался программированием. Читаю Лутса дошел до классов. Поэтому не совсем понимаю как из sqlite3 затем обратно dbf сделать. На Python очень легко с помощью re поменять артикул как мне надо и 9000 записей быстро исправляются. Сначала я просто практиковался, а потом пришла мысль почему бы не привести складскую номенклатуру в порядок но вот запись обратно в файл оказалась проблематично. Поэтому и обратился на форум за помощью. ошибку вызывает замена записи
0
|
928 / 690 / 269
Регистрация: 10.12.2016
Сообщений: 1,699
|
|||||||||||
24.12.2017, 14:34 | 7 | ||||||||||
для dbf есть свой ЯП, питоновская обертка то ли кривая, то ли авторы давно забили на нее. реально у меня получилось записать/прочитать dbf-файл без гемора.
http://alimuradov.ru/2016/12/0... -python-3/ дело конечно ваше, я бы работал с csv или sqlite3 в данном случае, dbf - только для отчетов где он нужен. Добавлено через 1 час 6 минут нашел я метод, но в доках его нет
ф-ции начиющиеся с _ - приватные и юзеру их лучше не использовать. нашел еще метод для удаления записей, тоже без with не работает. доки dbf никакие просто http://pythonhosted.org/dbf/ Добавлено через 29 минут
0
|
0 / 0 / 0
Регистрация: 22.12.2017
Сообщений: 4
|
|
27.12.2017, 10:12 [ТС] | 8 |
Попробую перезапись всей таблицы, по результатам отпишусь.
0
|
928 / 690 / 269
Регистрация: 10.12.2016
Сообщений: 1,699
|
|||||||||||||||||||||
27.12.2017, 14:56 | 9 | ||||||||||||||||||||
на 10000 у мну робит, но vs sqlite3 - тормоз
то же с sqlite3
0
|
27.12.2017, 14:56 | |
27.12.2017, 14:56 | |
Помогаю со студенческими работами здесь
9
Поиск и замена значений в файле Поиск и замена значений в файле Замена значений в RTF файле Замена значений в бинарном файле Замена отрицательных значений в файле нулями Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |