Mettre à jour un fichier CSV à partir d'un autre (en python)

Résolu/Fermé
damien.1l2 - Modifié le 13 déc. 2022 à 15:06
mamiemando Messages postés 33363 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 novembre 2024 - 9 déc. 2022 à 19:06

Bonjour, 

Je viens vers vous car j'ai un projet assez difficile a rendre a la fin de l'année (je suis en alternance c'est ce projet qui me fera ou non obtenir mon BTS).

Je dois mettre à jour le catalogue de l'entreprise dans laquelle je travaille avec un bot en python.

J'ai une v1 de l'algo :

Pour l'instant, mon "bot" se connecte sur le site du fournisseur, va télécharger la base de donnée à jour et la renomme.

Maintenant, je dois utiliser le nouveau fichier téléchargé par le bot pour mettre à jour notre fichier en local. Voici la structure du fichier que nous donne notre fournisseur (sur 3450 lignes) :

Et voici la structure de notre base de donnée en local (elle aussi en CSV) :

Donc là, j'en suis rendu à la comparaison que vous voyez au début de l'algorithme. Le but serait que le programme puisse récupérer les EAN des deux tableaux, qu'ils se servent des ces EAN comme "id" pour chaque produit pour pouvoir mettre à jour la quantité et les stocks de chaque produit sur notre fichier en local pour qu'ensuite on puisse l'uploader sur notre site web. 

Il faudrait aussi que si un produit existe dans le tableau du fournisseur, mais n'existe pas dans notre tableau, alors il l'ignore (il fait aucune action sur notre tableau en local). Et si un produit existe chez nous mais pas chez le fournisseur, il met la quantité et le prix à 0.

J'ai fait beaucoup de recherche sur internet pour cette fameuse partie de l'algorithme mais je ne trouve rien de vraiment fonctionnel, en espérant que quelqu'un aura les compétences et la patience de m'aider !

Merci pour la lecture have a nice day :)

A voir également:

2 réponses

Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
9 déc. 2022 à 17:24

Bonjour,

As-tu entendu parler de Pandas ?

0

Salut ! 

Oui j'ai lu toute la doc mais j'ai pas réussi a en tirer grand chose...

0
mamiemando Messages postés 33363 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 novembre 2024 7 801
Modifié le 9 déc. 2022 à 19:08

Bonjour,

Tu peux relativement charger un fichier csv avec pandas (voir pandas.read_csv) ou avec le module csv. Ceci fait, il suffit de former deux ensembles : les produits chez le fournisseur et les produits en stock. En admettant que ces ensembles soient stockés sous forme de set, tu peux facilement faire leur intersection et leurs soustractions.

Ce serait pas mal que tu nous donnes deux exemples minimaux (en copiant collant le début de tes csv) plutôt que de nous donner une capture d'écran peu pratique.

fournisseur.csv

produit,quantite
balle,2
vélo,3
quille,6
hochet,1
dé,2

stock.csv

produit,quantite
balle,2
diabolo,1
roller,2
quille,6

programme.py

import pandas as pd

print("-" * 80)
print("fournisseur")
df1 = pd.read_csv("fournisseur.csv")
print(df1)

print("-" * 80)
print("stock")
df2 = pd.read_csv("stock.csv")
print(df2)

print("-" * 80)
print("comparaison")
s1 = set(df1["produit"])
s2 = set(df2["produit"])
print(s1 - s2)
print(s2 - s1)
print(s1 & s2)

Résultat

--------------------------------------------------------------------------------
fournisseur
  produit  quantite
0   balle         2
1    vélo         3
2  quille         6
3  hochet         1
4      dé         2
--------------------------------------------------------------------------------
stock
   produit  quantite
0    balle         2
1  diabolo         1
2   roller         2
3   quille         6
--------------------------------------------------------------------------------
comparaison
{'dé', 'vélo', 'hochet'}
{'roller', 'diabolo'}
{'balle', 'quille'}

Bonne chance 

0