I'm working with python 2.7 and basically my python script consist of opening a csv file, looping into the rows to find the one with the id the user entered. Once the row is found, depending on some conditions the script upadtes three colunms with others values the user entered.
Here is my code:
# -*-coding:Latin-1 -*
import csv
from csv import reader
from csv import DictReader
print("")
print("Sélectionez une operation.")
print("")
print("1. Mettre à jour les indicateurs des tables ENTREPRISE")
print("")
print("2. Mettre à jour les indicateurs des tables PARTICULIER")
print("")
# Nos fichiers csv
# PMGE
Bfr = csv.reader(open('/home/cloudera/PMGE/Bfr.csv'))
linesBfr = list(Bfr)
CredBailImmo = csv.reader(open('/home/cloudera/PMGE/CredBailImmo.csv'))
linesCredBailImmo = list(CredBailImmo)
def scoreBas(x,y):
return 6*0.5 + x*0.3 + y*0.2
def scoreMoyen(x,y):
return 4*0.5 + x*0.3 + y*0.2
def scoreEleve(x,y):
return 2*0.5 + x*0.3 + y*0.2
while True:
# Récupérer une entrée de l'utilisateur
choix = input("Entrez votre choix (1/2): ")
# Vérifions si le choix fait partie de nos options
if choix in (1, 2):
if choix == 1:
print("")
print("CHoisissez la table à modifier.")
print("")
print(" 1. Besoin en Fonds de Roulement")
print(" 2. Credit bail Immobilier")
print("")
while True:
choix = input("Entrez votre choix(1/ 2/: ")
if choix in (1, 2):
if choix == 1:
print("")
num1 = str(input("Entez le numéro de l'entreprise à modifier: "))
num2 = int(input("Entez la nouvelle valeur de l'indicateur de confiance: "))
num3 = int(input("Entez la nouvelle valeur de l'indicateur de persévérance: "))
i = 0
while linesBfr[i][0] != num1:
i +=1
#indx conf = 32; pers = 33; score = 34;
if linesBfr[i][0] == num1:
#affichage les valeurs actuelle
print("")
print("Ancienne valeur de l'indicateur de confiance:")
print(linesBfr[i][32])
print("Ancienne valeur de l'indicateur de persévérance:")
print(linesBfr[i][33])
print("Ancienne valeur du score:")
print(linesBfr[i][34])
#on modifie les indincateurs dans la liste
linesBfr[i][32] = num2
linesBfr[i][33] = num3
#on écris les modifications dans le fichier csv
writer = csv.writer(open('/home/cloudera/PMGE/Bfr.csv', 'w'))
writer.writerows(linesBfr)
#on modifie le score
if linesBfr[i][31] == 'Bas':
linesBfr[i][34] = scoreBas(int(linesBfr[i][32]),int(linesBfr[i][33]))
writer = csv.writer(open('/home/cloudera/PMGE/Bfr.csv', 'w'))
writer.writerows(linesBfr)
elif linesBfr[i][31] == 'Moyen':
linesBfr[i][34] = scoreMoyen(int(linesBfr[i][32]),int(linesBfr[i][33]))
writer = csv.writer(open('/home/cloudera/PMGE/Bfr.csv', 'w'))
writer.writerows(linesBfr)
else:
linesBfr[i][34] = scoreEleve(int(linesBfr[i][32]),int(linesBfr[i][33]))
writer = csv.writer(open('/home/cloudera/PMGE/Bfr.csv', 'w'))
writer.writerows(linesBfr)
#affichage des nouvelles valeurs
print(linesBfr[i][0])
print(linesBfr[i][31])
print("")
print("Nouvelle valeur de l'indicateur de confiance:")
print(linesBfr[i][32])
print("Nouvelle valeur de l'indicateur de persévérance:")
print(linesBfr[i][33])
print("Nouvelle valeur du score:")
print(linesBfr[i][34])
elif choix == 2:
for row in CredBailImmo :
print(row)
break
else:
print("Invalid Input")
elif choix == 2:
print("Choisissez la table à modifier.")
print("1. ")
print("2. ")
break
else:
print("Invalid Input")
But when i execute the script the third value linesBfr[i][34] is not updated. I tried changing the conditions respectively by (converting to strings):
if str(linesBfr[i][31]) == 'Bas':
linesBfr[i][34] = scoreBas(int(linesBfr[i][32]),int(linesBfr[i][33]))
writer = csv.writer(open('/home/cloudera/PMGE/Bfr.csv', 'w'))
writer.writerows(linesBfr)
elif str(linesBfr[i][31]) == 'Moyen':
linesBfr[i][34] = scoreMoyen(int(linesBfr[i][32]),int(linesBfr[i][33]))
writer = csv.writer(open('/home/cloudera/PMGE/Bfr.csv', 'w'))
writer.writerows(linesBfr)
else:
linesBfr[i][34] = scoreEleve(int(linesBfr[i][32]),int(linesBfr[i][33]))
writer = csv.writer(open('/home/cloudera/PMGE/Bfr.csv', 'w'))
writer.writerows(linesBfr)
But still nothing. Can anyone help me figure out what i'm doing wrong?