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 :

Lire grand fichier csv ligne par ligne


Sujet :

Python

  1. #1
    Inactif
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Juin 2018
    Messages : 2
    Par défaut Lire grand fichier csv ligne par ligne
    Bonjour j'ai un énorme fichier csv (1GB) qui peut être mis à jour (le serveur ajoute souvent une nouvelle valeur).

    Je veux en python lire ce fichier ligne par ligne (ne pas charger tous les fichiers en mémoire) et je veux lire ceci en "temps réel".

    voici un exemple de mon fichier csv :


    dans un premier je veux obtenir l'en-tête de fichier (nom des colonnes) dans mon exemple je veux obtenir ce : id,nom,nom de famille
    et dans le deuxième temps, je veux lire ce fichier ligne par ligne et non charger tous les fichiers en mémoire
    et en troisième fois je veux essayer de lire les nouvelles valeur si le fichier a recu de nouvelle données

    j'ai recherché une solution avec l'utilisation pandas lire ce sujet :
    https://stackoverflow.com/questions/...-huge-csv-file
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import pandas as pd
    chunksize = 10 ** 8
    for chunk in pd.read_csv(filename, chunksize=chunksize):
        process(chunk)
    mais je ne vois pas ensuite une fois sortie de la boucle comment récuperer les nouvelles du fichgiers qui ont été ajouté sans devoir reparcourir tous le fichier...

    par avance merci pour votre aide

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 689
    Par défaut
    Salut,

    Citation Envoyé par Hister Voir le message
    mais je ne vois pas ensuite une fois sortie de la boucle comment récuperer les nouvelles du fichgiers qui ont été ajouté sans devoir reparcourir tous le fichier...
    Si les nouvelles données ne sont pas ajoutées "à la fin" du fichier existant, vous n'avez pas trop le choix. Sinon, çà se traite comme un fichier "log" et vous avez des exemples de code sur Internet (avec les mots clefs "python tail").

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Inactif
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Juin 2018
    Messages : 2
    Par défaut
    cela ne m'aide pas beaucoup...
    mais j'ai trouvé ailleur merci quand meme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    import csv
    import time
     
    filename = "path/to/your/file.csv"
     
    with open(filename, "rb") as f:  # on Python 3.x use: open(filename, "r", newline="")
        reader = csv.reader(f)  # create a CSV reader
        header = next(reader)  # grab the first line and keep it as a header reference
        print("CSV header: {}".format(header))
        for row in reader:  # iterate over the available rows
            print("Processing row: {}".format(row))  # process each row however you want
        # file exhausted, entering a 'waiting for new data' state where we manually read new lines
        while True:  # process ad infinitum...
            reader = csv.reader(f.readlines())  # create a CSV reader for the new lines
            for row in reader:  # iterate over the new rows, if any
                print("Processing new row: {}".format(row))  # process each row however you want
            time.sleep(10)  # wait 10 seconds before attempting again

Discussions similaires

  1. lire un fichier et le mettre ligne par ligne dans une list
    Par Invité dans le forum Débuter avec Java
    Réponses: 12
    Dernier message: 12/07/2018, 12h09
  2. Lire un fichier csv ligne par ligne
    Par dadod dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 16/05/2017, 16h10
  3. Réponses: 5
    Dernier message: 03/03/2016, 19h48
  4. [AC-2003] lire une table Access en VBA ligne par ligne
    Par afifaNancy dans le forum VBA Access
    Réponses: 6
    Dernier message: 25/06/2012, 13h54
  5. Réponses: 2
    Dernier message: 05/05/2010, 17h01

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