1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
# -*- coding: UTF-8 -*-
#!/usr/bin/python3
import csv
import sys
import os
import logging
import shutil
import time
import re
logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)
python_version = sys.version_info.major
logging.info("executed by python %d" % python_version)
listcsv = []
total = 0
def fusion_csv(listcsv):
count = {}
for a_csv in listcsv :
reference = a_csv['D\xe9tail commande - r\xe9f\xe9rence produit']
quantite = int(a_csv['D\xe9tail commande - qte produit'] ) #### /!\ La quantité est exprimé sous la forme d'une string. Ilk faut donc la convertir en entier !
prix_achat = a_csv['D\xe9tail commande - prix d\'achat']
if reference not in count.keys():
count[reference] = quantite ### Si la référence n'existe pas encore on l'ajoute donc au dico, en lui donnant comme valeur la quantite qu'on vient de relever
else :
count[reference] += quantite ### Nous avions déjà vu cette référence avant. On ajoute la quantité actuelle à ce qu'on avait compé avant
print(count)
def modif_ref(row):
nbre_lignes = 0
#print(row)
reference = row['D\xe9tail commande - r\xe9f\xe9rence produit']
quantite = row['D\xe9tail commande - qte produit']
prix_achat = row['D\xe9tail commande - prix d\'achat']
#nbre_lignes += 1
limit = '_'
if limit in reference:
dernier = reference.find(limit)
ref_courte = reference[:dernier]
row['D\xe9tail commande - r\xe9f\xe9rence produit'] = row['D\xe9tail commande - r\xe9f\xe9rence produit'].replace(reference, ref_courte)
listcsv.append(row)
else:
row['D\xe9tail commande - r\xe9f\xe9rence produit'] = row['D\xe9tail commande - r\xe9f\xe9rence produit'].replace(reference, reference)
listcsv.append(row)
#print (listcsv)
fusion_csv(listcsv)
def lire_csvfile(csv_filename):
logging.info("importing data from %s" % csv_filename)
#check whether csv file has utf-8 bom char at the beginning
skip_utf8_seek = 0
with open(csv_filename) as csvfile:
csv_start = csvfile.read(3)
if csv_start == b'\xef\xbb\xbf':
skip_utf8_seek = 3
with open(csv_filename) as csvfile:
csvfile.next()
# remove ut-8 bon sig
csvfile.seek(skip_utf8_seek)
#spamreader = csv.reader(csvfile, delimiter=';')
reader = csv.DictReader(csvfile, delimiter=';')
try:
for row in reader:
modif_ref(row)
except csv.Error as e:
sys.exit('file {}, line {}: {}'.format(filename, reader.line_num, e))
def main(args):
# filename passde through args
if len(args) >=2:
csv_filename = args[1]
lire_csvfile(csv_filename)
main(sys.argv) |
Partager