Partage
  • Partager sur Facebook
  • Partager sur Twitter

Limiter nombre de lignes dans fichier de sortie

    20 février 2021 à 19:13:49

    salut à tous,


    concernant le code suivant :

    def nbGen(min, max, step):
        global fichier
        for i in range(min, max, step):
            fichier = open("gen1.txt", "a")
            fichier.write(str(i) + '\n')
    
    
    nbGen(1, 50000, 3)
    fichier.close


    Ce code me permet d'incrémenter ou décrémenter une valeur comprise dans un range puis m’enregistre la sortie dans un fichier texte.


    Actuellement, l’intégralité de la sortie s’enregistre donc dans un seul fichier de sortie. A la place d’un seul fichier de sortie,je n’aimerais avoir que 50 résultats par fichier de sortie et qu’un nouveau soit créer lorsque l’actuel arrive à 50.
    J’ai donc cherché un peu et pour la différenciation des noms de fichiers jai trouvé l’incrémentation des noms de fichiers sous la forme : 

    fichier = open("gen%s.txt" » % inc, "a")


    Ceci en incrémentant la variable inc.

    Pour le comptage du nombre de ligne dans chaque fichier j’ai également trouvé 2 solutions :

    • Compter le nombre de ligne du fichier avant d’enregistrer la valeur 
       fichier.readline()
    • Utiliser une variable à augmenter à chaque increment/décrément. Cette 2ème solution évite de recompter l’intégralité du fichier à chaque nouveau résultat à enregistrer, entraînant donc un gain de temps d'exécution.


    Par contre, malgré la possession de ces éléments, je ne comprends pas comment les mettre en pratique dans le code.

    J'ai actuellement sorti la clôture du fichier de la boucle pour améliorer le temps d'exécution (diviser par 2 d'après les tests que j'ai fait), mais avec les multiples fichiers de sortie, je pense que je ne pourrais que l'intégrer dans la boucle.

    Si vous pouviez m’aider sur ce code, ce serait cool.

    Merci à vous

    • Partager sur Facebook
    • Partager sur Twitter
      20 février 2021 à 19:49:36

      Partez d'une liste de nombre de 1 à 30 et une fonction qui chaque fois qu'on l'appelle affiche les 5 nombres suivants.

      Déjà, vous imaginez bien que la fonction devra recevoir la liste, l'index à partir duquel commencer à.... et éventuellement le nombre d'items à imprimer à partir de. charge à l'appelant de calculer l'index suivant s'il veut itérer pour avoir la suite.

      Cela fait, le reste c'est de la peinture: on peut demander à l'appelant d'ouvrir le fichier à écrire et de le passer en paramètre (print(..., file=...) existe) et de calculer le nom du fichier en fonction de ce qu'il veut.

      • Partager sur Facebook
      • Partager sur Twitter
        2 mars 2021 à 22:07:07

        mps a écrit:

        Partez d'une liste de nombre de 1 à 30 et une fonction qui chaque fois qu'on l'appelle affiche les 5 nombres suivants.

        Déjà, vous imaginez bien que la fonction devra recevoir la liste, l'index à partir duquel commencer à.... et éventuellement le nombre d'items à imprimer à partir de. charge à l'appelant de calculer l'index suivant s'il veut itérer pour avoir la suite.

        Cela fait, le reste c'est de la peinture: on peut demander à l'appelant d'ouvrir le fichier à écrire et de le passer en paramètre (print(..., file=...) existe) et de calculer le nom du fichier en fonction de ce qu'il veut.


        Bonjour mps,

        merci pour la réponse. Je vais tâcher mettre en application ces précieux conseils.

        • Partager sur Facebook
        • Partager sur Twitter

        Limiter nombre de lignes dans fichier de sortie

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown