Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ecrire n fichiers à nom 'dynamique'

    17 mars 2015 à 14:04:36

    Bonjour à tous,

    Je souhaite lire un fichier (ce que je fais avec un bête input=readline()) et, grosso modo, le couper/traiter avec en sortie plusieurs fichiers fils. Comme on ne peut pas avoir 50 fichiers du même nom, je pense qu'il faudrait qu'ils s'appellent Fichier_1, Fichier_2 ... Fichier_n.

    Comme "n" peut être assez grand dans mon cas, je voudrais automatiser cela, mais je n'ai pas encore trouvé la solution.

    D'après quelques posts sur internet concernant des variables à nom dynamique, j'ai fait un test en utilisant un tableau :

    for i in range(n):

        tableau[i]=open('Fichier'+str(i),'w')

    Mais ça n'a pas fonctionné du tout... Est-ce qu'il existe une astuce qui m'échappe ?

    Merci par avance,

    Benjamin

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      17 mars 2015 à 14:10:36

      tableau = []
      for i in range(n):
          f = open('Fichier'+str(i), 'w')
          tableau.append(f)

      ?

      EDIT: Ça sent tout de même la mauvaise conception...

      -
      Edité par Anonyme 17 mars 2015 à 14:13:07

      • Partager sur Facebook
      • Partager sur Twitter
        17 mars 2015 à 17:55:49

        Je ne sais pas très bien ce que tu veux dire dans ton "EDIT" mais bon, je te remercie quand même et je continue d'avancer mon script.

        Merci encore.

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          17 mars 2015 à 18:19:32

          • Quel est l'intérêt de créer plusieurs fichiers à la suite ?
          • Pour écrire une seule ligne ?

          Niveau conception, si on ne sait pas répondre à ces questions, c'est une très mauvaise idée !

          • Partager sur Facebook
          • Partager sur Twitter
            17 mars 2015 à 23:24:47

            En fait je voulais couper un gros fichier de données d'entrée en n fichiers qui en contiennent les différents bouts (mais pas qu'une ligne), ceci dans l'objectif de faire tourner un programme n fois en parallèle.

            Le fichier initial est tellement gros que le programme en question mettrait des semaines à tourner (et encore, s'il y arrive)...

            Je précise aussi que mon découpage n'est pas simplement après x lignes, et donc la fonction split du terminal linux ne convenait pas.

            • Partager sur Facebook
            • Partager sur Twitter
              17 mars 2015 à 23:38:50

              Keizer51 a écrit:

              En fait je voulais couper un gros fichier de données d'entrée en n fichiers qui en contiennent les différents bouts (mais pas qu'une ligne), ceci dans l'objectif de faire tourner un programme n fois en parallèle.


              Le problème de conception est confirmé.

              Si les programmes ne font pas d'écritures, rien n'empêche que plusieurs programmes lisent un seul fichier.

              Sinon tu peux utiliser une base de données, ça peut être plus adapté.

              Au passage, si les programmes tournent sur le même PC, lancer plusieurs fois le même programme n'a pas grand intérêt, un seul programme peut utiliser toutes les capacités de ta machine s'il est correctement conçu (threads).

              • Partager sur Facebook
              • Partager sur Twitter

              Blond, bouclé, toujours le sourire aux lèvres...

                18 mars 2015 à 9:58:26

                Je tempèrerai ce passage à propos des threads : le GIL en Python fait que tous les threads tourneront sur le même coeur.

                Ça reste efficace si les threads font surtout de l'IO, mais dans le cas où on a besoin de faire beaucoup plus de calculs que d'IO, il n'y a pas d'autre choix que de paralléliser les processus.

                Cela dit, il n'y a peut-être pas besoin de lancer plusieurs instances parallèles : le module concurrent.futures permet de gérer ça de façon transparente.

                • Partager sur Facebook
                • Partager sur Twitter
                Zeste de Savoir, le site qui en a dans le citron !

                Ecrire n fichiers à nom 'dynamique'

                × 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