IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Mise à jour fichier CSV


Sujet :

Python

  1. #1
    Membre confirmé Avatar de memento80
    Homme Profil pro
    Boulot : ne rentre pas dans une case
    Inscrit en
    Novembre 2004
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Boulot : ne rentre pas dans une case
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2004
    Messages : 163
    Par défaut Mise à jour fichier CSV
    Bonjour à tous,

    Une petite question toute bête dans mon apprentissage de Python pour lequel je n'ai pas trouvé de réponse :
    est-il possible de mettre à jour un fichier CSV sur une ligne bien précise (avec le module CSV.. ou sinon sans) ?

    Un peu comme on mettrait à jour une base de données avec un UPDATE et une clause WHERE...

    Exemple de fichier CSV :
    2;X;125;toto
    2;Y;150;toto
    3;Z;140;titi
    On voudrait mettre à jour la ligne ayant Y dans la deuxième colonne avec 120 à la place de 150 sur la troisième colonne.

    Merci.

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Vous n'avez pas d'autres solutions que de lire le fichier et de réécrire dans un fichier les modifications.

    À la rigueur si vous êtes sûr de votre coup, utilisez csv.reader pour stocker toutes les lignes dans une liste, modifiez-les et overwrite votre fichier avec csv.writer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    NAME = "mon_fichier.csv"
     
    file = open(NAME, 'rb')
     
    lines = [row for row in csv.reader(file)]
     
    file.close()
     
    print(lines)
    Avec ce code vous devez récupérer toutes les lignes

  3. #3
    Membre confirmé Avatar de memento80
    Homme Profil pro
    Boulot : ne rentre pas dans une case
    Inscrit en
    Novembre 2004
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Boulot : ne rentre pas dans une case
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2004
    Messages : 163
    Par défaut
    Malheureusement, cela risque d'être un peu trop lourd de tout ouvrir à chaque fois, modifier et réécrire après.

    Il va falloir que je songe à aborder le problème différemment.

    Merci quand même pour l'aide.

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Il va falloir que je songe à aborder le problème différemment
    Vous pourrez tourner le problème dans tous les sens, dans tous les cas il vous faudra une lecture, une modification de l'existant et une écriture pour l'enregistrement.

    Peut-être trouverez-vous une fonction toute faîte, mais sachez quelle passera par ces 3 étapes.

  5. #5
    Membre confirmé Avatar de memento80
    Homme Profil pro
    Boulot : ne rentre pas dans une case
    Inscrit en
    Novembre 2004
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Boulot : ne rentre pas dans une case
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2004
    Messages : 163
    Par défaut
    Vous pourrez tourner le problème dans tous les sens, dans tous les cas il vous faudra une lecture, une modification de l'existant et une écriture pour l'enregistrement.
    Bien sur, bien sur.. Je ne remets pas en cause ceci.

    Mais quand je disais "aborder le problème différemment", c'était plutôt de contourner ce problème...
    Tout dépend de ce que je faisais du fichier CSV à la fin.. Ici, c'est pour ensuite le traiter en base de données justement..
    Donc par exemple, je rajoute un identifiant (new ou maj) à chaque ligne du fichier CSV à la création et traite séquentiellement chaque ligne... Si je tombe sur un identifiant de "mise à jour", alors je mets à jour une ligne précédemment inséré dans la base de données.... et sinon je l'insère.

    C'est une solution de contournement dans mon cas.

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    En effet vous pourriez importer votre fichier csv dans une base de données sqlite par exemple, il existe plein de solutions via google, je vous laisse chercher.

    Pour sql vous aurez la commande update et set qui feront le travail

  7. #7
    Membre confirmé Avatar de memento80
    Homme Profil pro
    Boulot : ne rentre pas dans une case
    Inscrit en
    Novembre 2004
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Boulot : ne rentre pas dans une case
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2004
    Messages : 163
    Par défaut
    Merci. Ceci ne devrait pas trop me poser de problème.

Discussions similaires

  1. Mise à jour fichier csv depuis formulaire
    Par buggup dans le forum Langage
    Réponses: 5
    Dernier message: 09/09/2013, 15h47
  2. Mise à jour fichier de sécurité
    Par manu971 dans le forum Sécurité
    Réponses: 3
    Dernier message: 03/12/2007, 20h50
  3. Mise à jour Fichiers
    Par med_ellouze dans le forum Langage
    Réponses: 4
    Dernier message: 12/08/2007, 16h52
  4. [BDD][XML] mise à jour fichier xml est-il possible ?!
    Par akara dans le forum XQUERY/SGBD
    Réponses: 2
    Dernier message: 02/07/2007, 13h15
  5. [WD9][Combo] Mise à jour fichier
    Par papyg dans le forum WinDev
    Réponses: 5
    Dernier message: 15/06/2007, 08h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo