Уведомления

Группа в Telegram: @pythonsu

#1 Июль 26, 2017 16:20:21

evp24
Зарегистрирован: 2017-05-03
Сообщения: 96
Репутация: +  3  -
Профиль   Отправить e-mail  

xml множество файлов в разных папках собрать воедино

Всем спасибо, за помощь.
Оказывается, можно в ubuntu16.04 запустить 1С
и оказывается, из самой 1С можно представлениями выводить нужные поля в CSV формат.

базу из xml с помощью одной программки удалось собрать, и без конфигов родных, запустить.

вытащил то, что нужно через 1С

Офлайн

#2 Июль 31, 2017 22:26:31

evp24
Зарегистрирован: 2017-05-03
Сообщения: 96
Репутация: +  3  -
Профиль   Отправить e-mail  

xml множество файлов в разных папках собрать воедино

Задача почти решена… была
Вытащил то, что нужно, но в такой каше, что мама не горюй.
Выходные прошли в поте лица… сортировках, выборках и т.п.

Удалось привести таблицу к более менее “приемлемому” виду.
А именно, выделить два файла csv

ostatki.csv

 Склад,Товар,кол-во
Главный склад,Блюдо среднее 24 см,6
Главный склад,Блюдо большое Скибин,13
Главный склад,Часы большие,49
Главный склад,Гранат малый,9
Главный склад,Гранат сред.,6
Главный склад,Дервиш белый бол.,9
Главный склад,Колокольчик Водолаз,43
Главный склад,Дервиш цветной бол.,3
Второй склад,Дервиш цветной бол.,1
Мечеть 2017,Круж. Гез. ворота,12
Мечеть 2017,Круж. Мечеть,12
Мечеть 2017,Круж. Текие Дервиш,12
Мечеть 2017,Круж. Ник. собор,12
Мечеть 2017,Львёнок сшитый,1
Мечеть 2017,Колокольчик Русский,1



tovari.csv

 Код,ID_РОДИТЕЛЯ,Наименование,Цена,Штрихкод,Description
2298,136,Часы большие скиб.,4000,202283,Часы большие скиб.
140,136,Блюдо большое Скибин,3800,200125,Блюдо большое Скибин
108,107,Колокольчик Русская ,300,200093,Колокольчик Русская 
106,107,Колокольчик Русский ,300,200091,Колокольчик Русский 
105,107,Колокольчик Водолаз,600,200090,Колокольчик Водолаз
2013,254,Гранат малый,850,201998,Гранат малый
2388,254,Дервиш цветной бол.,2250,202373,Дервиш цветной бол.

И тут я завис ))

Цель - нужно вставить в ostatki.csv перед названием товара его КОД

Например остаток:
Главный склад,Блюдо большое Скибин,13

а товар
140,136,Блюдо большое Скибин,3800,200125,Блюдо большое Скибин

В итоге, нужно получить файл, где будет внесено изменение в файл ostatki.csv такого вида:
Главный склад,140,Блюдо большое Скибин,13

В EXCEL это сделать крайне сложно пока не возможно (для меня)
прошу помощи!

Отредактировано evp24 (Июль 31, 2017 22:48:32)

Офлайн

#3 Авг. 1, 2017 01:06:52

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

xml множество файлов в разных папках собрать воедино

просто добавь воды пустое поле

 #!/usr/bin/env python3
f = open('ostatki.csv')
ostatki = []
for i in f.readlines():
    ostatki.append(i.strip().split(','))
f.close()
f = open('tovari.csv')
tovari = []
for i in f.readlines():
    tovari.append(i.strip().split(','))
f.close()
ostatki[0] = ['Склад','Код','Товар','Количество']
for i in ostatki[1:]:
    i.insert(1,'') ###
    for j in tovari[1:]:
        if i[2] == j[2]:
            i[1] = j[0]
            
result = ''
for i in ostatki:
    result += ','.join(i) +'\n'
    
print(result)   

Отредактировано vic57 (Авг. 1, 2017 02:22:13)

Офлайн

#4 Авг. 1, 2017 09:36:25

evp24
Зарегистрирован: 2017-05-03
Сообщения: 96
Репутация: +  3  -
Профиль   Отправить e-mail  

xml множество файлов в разных папках собрать воедино

Немножко отформатировал текст, оказывается в gedit и notepad++
содержимое файлов по разному выглядит.

Результат, в моем spyder3
выводит - 500 строк

НО, ВыВОДИТ!!!!

Спасибо!

Пытаюсь сделать так:

 #!/usr/bin/env python3
f = open('ostatki.csv')
ostatki = []
for i in f.readlines():
    ostatki.append(i.strip().split(','))
f.close()
f = open('tovari.csv')
tovari = []
for i in f.readlines():
    tovari.append(i.strip().split(','))
f.close()
ostatki[0] = ['Склад','Код','Товар','Количество']
for i in ostatki[1:]:
    i.insert(1,'') ###
    for j in tovari[1:]:
        if i[2] == j[2]:
            i[1] = j[0]
            
result = ''
for i in ostatki:
    result += ','.join(i) +'\n'
f = open('result.txt','w')
for i in ostatki:
    f.write('\t'.join(i) + '\n')
f.close()

выдает ошибку:

 n [5]: runfile('/home/irip/1/tune.py', wdir='/home/irip/1')

Отредактировано evp24 (Авг. 1, 2017 09:44:28)

Офлайн

#5 Авг. 1, 2017 09:49:35

evp24
Зарегистрирован: 2017-05-03
Сообщения: 96
Репутация: +  3  -
Профиль   Отправить e-mail  

xml множество файлов в разных папках собрать воедино

 #!/usr/bin/env python3
f = open('ostatki.csv')
ostatki = []
for i in f.readlines():
    ostatki.append(i.strip().split(','))
f.close()
f = open('tovari.csv')
tovari = []
for i in f.readlines():
    tovari.append(i.strip().split(','))
f.close()
ostatki[0] = ['Склад','Код','Товар','Количество']
for i in ostatki[1:]:
    i.insert(1,'') ###
    for j in tovari[1:]:
        if i[2] == j[2]:
            i[1] = j[0]
            
f = open('result.txt','w')
for i in ostatki:
    f.write('\t'.join(i) + '\n')
f.close()

вот так, получилось ))

Офлайн

#6 Авг. 1, 2017 10:38:52

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

xml множество файлов в разных папках собрать воедино

что-то не увидел разницы и зачем менять разделитель? для csv стандарт - запятая или точка с запятой.
https://ru.wikipedia.org/wiki/CSV

Офлайн

#7 Авг. 1, 2017 10:45:30

evp24
Зарегистрирован: 2017-05-03
Сообщения: 96
Репутация: +  3  -
Профиль   Отправить e-mail  

xml множество файлов в разных папках собрать воедино

Не совсем понял, о чем речь.
Но файл result получился отменный!
Спасибо

Офлайн

#8 Авг. 1, 2017 11:34:35

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

xml множество файлов в разных папках собрать воедино

evp24
Не совсем понял, о чем речь.
ну если скажем не будет такого кода/товара то строка будет:
склад,,товар,количество - заметно на глаз что поле пустое(две запятых подряд)
а с табом:
склад\t\tтовар\tколичество - на глаз можно и ошибиться
f.write('\t'.join(i) + ‘\n’)
f.write(','.join(i) + ‘\n’)
имелось в виду это

Офлайн

#9 Авг. 1, 2017 13:23:02

evp24
Зарегистрирован: 2017-05-03
Сообщения: 96
Репутация: +  3  -
Профиль   Отправить e-mail  

xml множество файлов в разных папках собрать воедино

vic57
имелось в виду это

Понятно.
Мне “на глазок” потом все равно, в calc импортировать
а в нем, сортировка по любому столбцу и ищем “дырки”.

Офлайн

#10 Авг. 5, 2017 08:57:07

evp24
Зарегистрирован: 2017-05-03
Сообщения: 96
Репутация: +  3  -
Профиль   Отправить e-mail  

xml множество файлов в разных папках собрать воедино


Есть две таблицы

goods_has_invent

  • id
    goods_idgoods
    invent_idinvent
    goods_has_invent_qty
    goods_has_invent_cost_z
    goods_has_invent_cost_p
    goods_has_invent_cost_t
    goods_has_invent_qty_prev
    goods_has_invent_qty_next

invent

  • idinvent
    invent_date
    invent_description
    user_iduser
    contragent_idcontragent
    invent_sum
    storage_idstorage
    goods_has_invent_qty_prev
    goods_has_invent_qty_next

storage_idstorage - это склад
goods_idgoods - это id товара

goods_idgoods + goods_has_invent_cost_p у меня есть, я их выделил в одну таблицу calc

теперь нужно понять, как связать storage_idstorage с
goods_has_invent_qty - показывающим остаток товара

Может это можно средствами mysql как-то сделать?
У меня уже есть таблицы с товарами и категориями, а также со складами
нужно привязать товар к складу
а делается это посредством двух таблиц указанных выше

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version