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 :

Methode saut de lignes toute les x lignes dans un fichier existant. [Python 3.X]


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2018
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Methode saut de lignes toute les x lignes dans un fichier existant.
    Bonjour à tous,

    J'aimerais faire une tâche qui parait plutôt simple mais cela fait plusieurs jours que je coince.

    En gros je voudrais sauter une ligne toute les 5 lignes...

    Actuellement c'est déjà le cas, mon application récupère de la donnée :
    ID user bablabla date

    et saute une ligne si le numero de la ligne est un multiple de 5 (via un compteur qui s'imcrémente de +1 à chaque nouvelle entrée) :

    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
    18
    # Constants
    COUNT = 1  #  counter
     
    def increment_counter():
        global COUNT
        COUNT = COUNT+1
     
     
    def reset_counter():
        global COUNT
        COUNT = 1
     
     if COUNT % 5 == 0:
        increment_counter()
        fa.write(id + user + blabla + date "\n\n")
    else:
         increment_counter()
         fa.write(id + user + blabla + date "\n")
    Je récupère donc en output :

    id user blablabla date
    id user blablabla date
    id user blablabla date
    id user blablabla date
    id user blablabla date

    id user blablabla date
    id user blablabla date
    id user blablabla date
    id user blablabla date
    id user blablabla date

    etc...

    Sauf que voilà, je travail sur un petit fichier texte et l'application commence à devenir balèze donc j'aimerais travailler en BDD (sqlite3).

    Je vais donc utiliser des INSERT INTO.

    Je voudrais avoir le même output quand je fais un SELECT (un saut de ligne tout les 5 lignes) mais SEULEMENT à la demande, c'est à dire en appelant une méthode qui va sauter les lignes dans le fichier là ou il faut.

    du style "sauterDesLignes()"

    Auriez vous une idée de comment je pourrais m'y prendre ?

    Merci !

  2. #2
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 038
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 038
    Points : 8 406
    Points
    8 406
    Par défaut
    salut,

    j'ai pas compris grand chose à l'histoire des select dans la db, mais pour le moins tu peux simplifier ton programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    datas = ['id user blablabla date'] * 50
    for counter, line in enumerate(datas):
       print (line)
       if counter % 5 == 4:
          print()
    tu peux ré-exprimer ta problématique autour de la db en prenant un exemple concret stp ?

  3. #3
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 969
    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 : 3 969
    Points : 7 394
    Points
    7 394
    Par défaut
    Après avoir utilisé SELECT, et avec enumerate tu peux sans problème faire la même chose.

    Ça ressemblerait à,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i, row in enumerate(rows, start=1):
        if i % 5 == 0:
            print()
        else:
            print(row)
    rows étant le résultat de ton SELECT

  4. #4
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 038
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 038
    Points : 8 406
    Points
    8 406
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        if i % 5 == 0:
            print()
        else:
            print(row)
    du coup toutes les 5 lignes on zappe la ligne et on affiche un retour chariot à la place (donc la ligne est perdue), c'est bien ça ?

    mais je vois vraiment pas le rapport avec un select dans une db, si quelqu'un peut m'expliquer...

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2018
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Merci pour vos réponses, j'ai réussi ce que je voulais faire en dupliquant les entrées (insert en bdd + ecriture en fichier).
    En gros je stock en BDD, puis je dois envoyer les données par mail, mais, par bloc de 5 lignes....

    donc le saut de ligne je le traite directement dans un fichier temporaire, en plus de l'ajout en bdd.

    Je vais surement ouvrir un sujet avec la totalité du code histoire d'avoir votre avis sur les bonnes/mauvaises pratiques.

    Merci !

  6. #6
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 969
    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 : 3 969
    Points : 7 394
    Points
    7 394
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    du coup toutes les 5 lignes on zappe la ligne et on affiche un retour chariot à la place (donc la ligne est perdue), c'est bien ça ?

    mais je vois vraiment pas le rapport avec un select dans une db, si quelqu'un peut m'expliquer...
    Euh non, j'ai juste zappé un print(row) dans mon exemple.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Éliminer 3 lignes toutes les 250 lignes
    Par meriouma08 dans le forum MATLAB
    Réponses: 1
    Dernier message: 08/01/2015, 16h48
  2. [KSH] ajouter des saut de lignes tous les 200 caractères dans un fichier
    Par twixi dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 09/10/2012, 16h58
  3. Fusionner toutes les 4 lignes en une seule ligne
    Par mlaiti dans le forum Linux
    Réponses: 3
    Dernier message: 14/06/2012, 02h03
  4. [RegEx] Insérer une ligne toutes les n lignes dans un tableau
    Par guidav dans le forum Langage
    Réponses: 5
    Dernier message: 09/07/2008, 16h12
  5. Réponses: 2
    Dernier message: 16/08/2006, 15h47

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