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 :

Copier le contenue de 2 fichiers vers 1 fichier


Sujet :

Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Points : 18
    Points
    18
    Par défaut Copier le contenue de 2 fichiers vers 1 fichier
    Salut,

    Je cherche a copier le contenue de 2 fichiers dans un fichier mais a la suite.
    Exemple:

    J'ai X.txt et Y.txt en input avec comme contenue:

    X.txt
    abc
    Y.txt
    def
    Et je veux en output :

    Z.txt
    abc
    def
    Y'a t-il une commande simple ?
    Merci

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Points : 290
    Points
    290
    Par défaut
    Bonjour,

    Je ne connais pas de commande simple, mais tu peux essayer de cette maniére:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    with open("X.txt") as x,  open("Y.txt") as y, open("Z.txt", "w") as z:
        z.write(x.read() + y.read())

  3. #3
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Si tu peux copier directement dans un des deux fichiers:

    python 2.x
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    with open('fichierX', 'r') as fx:
        with open('fichierY', 'a') as fy:
            fy.write(fx.read())
    python 3.x
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    with open('fichierX', 'r') as fx, with open('fichierY', 'a') as fy:
        fy.write(fx.read())

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Et si les fichiers sont gros, on peut travailler ligne par ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    with open('Z.txt', 'w') as fz:
        with open('X.txt', 'r') as fx:
            for ligne in fx:
                fz.write(ligne)
        with open('Y.txt', 'r') as fy:
            for ligne in fy:
                fz.write(ligne)
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Points : 18
    Points
    18
    Par défaut
    Merci pour vos réponses
    Le problème c'est que ça me sort un fichier avec comme résultat

    abcdef
    alors que je souhaiterais que ça saute une ligne :

    abc
    def

  6. #6
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Ça, ça veut dire que sur le fichier "X.txt", la ligne "abc" n'est pas suivie d'une fin de ligne. Si elle l'était, le code proposé la recopierait sans problème.

    Pour palier cela, remplacer ligne par ligne.rstrip()+'\n':

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    with open('Z.txt', 'w') as fz:
        with open('X.txt', 'r') as fx:
            for ligne in fx:
                fz.write(ligne.rstrip()+'\n')
        with open('Y.txt', 'r') as fy:
            for ligne in fy:
                fz.write(ligne.rstrip()+'\n')
    Ainsi, grâce à rstrip:
    - si ligne n'a pas de fin de ligne, on en ajoute une
    - si ligne a déjà une fin de ligne, on n'en ajoute pas une 2e!

    Petit effet de bord: je crois qu'en plus de retirer la fin de ligne, rstrip retire aussi les éventuels espaces et autres caractères du même genre (tabulations, ...) en fin de ligne: à vérifier sur la doc, et voir si c'est un problème pour l'application.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Petit effet de bord: je crois qu'en plus de retirer la fin de ligne, rstrip retire aussi les éventuels espaces et autres caractères du même genre (tabulations, ...) en fin de ligne: à vérifier sur la doc, et voir si c'est un problème pour l'application.
    Salut
    Exact. Les fonctions de type strip() traitent aussi les espaces et tabulations...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/08/2007, 09h11
  2. [VBA-E]Copier le contenu d'une cellule vers une autre
    Par idir.17 dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 26/03/2007, 16h50
  3. Enregistrer contenu XML en mémoire vers un fichier
    Par kingmandrax dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 26/10/2006, 10h24
  4. copier le contenu d'un text vers un tableau
    Par brahim999 dans le forum Bases de données
    Réponses: 1
    Dernier message: 17/06/2006, 17h40
  5. Réponses: 12
    Dernier message: 22/02/2006, 15h28

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