Se connecter

Informatique

Programmation

Sujet : Python-panda: enregistrer des informations dans un fichier csv.
1
Gaarou
Niveau 1
02 mars 2021 à 09:04:01

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

Proutozorent
Niveau 7
02 mars 2021 à 12:10:52

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

Gaarou
Niveau 1
03 mars 2021 à 19:47:09

Le 02 mars 2021 à 12:10:52 Proutozorent a écrit :
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

Mercii beaucoup pour ton aide

Gaarou
Niveau 1
03 mars 2021 à 20:51:26

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)

Azerban
Niveau 15
05 mars 2021 à 15:47:58

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

1
Sujet : Python-panda: enregistrer des informations dans un fichier csv.
   Retour haut de page
Consulter la version web de cette page