Bonjour,
Je dois actuellement créer un programme qui utilise un fichier csv. pour récupérer des informations. Jusqu'ici tout va bien. Mon problème c'est que je n'arrive pas ensuite à enregistrer de nouvelle info dans le fichier csv. déjà existant. Si quelqu'un aurait la fonction je suis preneur.
Bonne journée
Hello
Pour lire ton fichier csv tu fais un truc style
import pandas as pd
DF = pd.read_csv("fichier.csv", sep=";")
Pour l'enregistrer, il suffit de faire à peu près la même manip
import pandas as pd
DF = pd.read_csv("fichier.csv",sep=";")
#Traitement sur ton dataframe...
DF.to_csv("fichier.csv",sep=";",index=False)
Note que les paramètres de lecture et d'écriture dépendent de la nature de ton fichier et que c'est susceptible de changer. J'ai utilisé ";" comme séparateur car il est lu directement par excel sans avoir à lui fournir le séparateur.
Ensuite, l'enregistrement via to_csv ne marche pas si ton fichier est ouvert. Ton fichier peut être ouvert si tu l'ouvres en dehors de ton programme (genre avec excel) ou si tu l'ouvres via ton programme via quelque chose comme ça :
file = open("fichier.csv","w")
...
traitement via pandas
...
file.close()
Donc mieux vaut avoir excel fermé + utiliser read_csv de pandas
Le 02 mars 2021 à 12:10:52 Proutozorent a écrit :
HelloPour lire ton fichier csv tu fais un truc style
import pandas as pd DF = pd.read_csv("fichier.csv", sep=";")
Pour l'enregistrer, il suffit de faire à peu près la même manip
import pandas as pd DF = pd.read_csv("fichier.csv",sep=";") #Traitement sur ton dataframe... DF.to_csv("fichier.csv",sep=";",index=False)
Note que les paramètres de lecture et d'écriture dépendent de la nature de ton fichier et que c'est susceptible de changer. J'ai utilisé ";" comme séparateur car il est lu directement par excel sans avoir à lui fournir le séparateur.
Ensuite, l'enregistrement via to_csv ne marche pas si ton fichier est ouvert. Ton fichier peut être ouvert si tu l'ouvres en dehors de ton programme (genre avec excel) ou si tu l'ouvres via ton programme via quelque chose comme ça :
file = open("fichier.csv","w") ... traitement via pandas ... file.close()
Donc mieux vaut avoir excel fermé + utiliser read_csv de pandas
Mercii beaucoup pour ton aide
J'ai essayé comme tu m'a dit, mais le problème c'est que cela me créé un nouveau fichier csv.
Je vous passes mon code, ça se trouve vous aller mieux comprendre:
from pandas import DataFrame
import pandas as pd
df = pd.read_csv('user_info.csv', delimiter=';')
b = df['email']
c = df['password']
nombre_element = len(b)
new_mail = input("Rentrez votre adresse email: ")
new_mdp = input("Rentre votr mot de passe: ")
a = 0
for csv_email in df['email'] :
if str(csv_email).strip() == str(new_mail) :
print("Votre adresse mail fait déja partie des données")
a = 1
if a == 0:
df.loc[55] = [54, new_mail, new_mdp]
print("Vous venez de créer votr compte")
df.to_csv("user_info.csv",sep=";",index=False)
print(df)
Pas besoin d'utiliser une lib externe pour écrire dans un fichier csv, il y a le module csv dans la librairie standard de Python.
https://realpython.com/python-csv/#writing-csv-files-with-csv