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
Y.txtabc
Et je veux en output :def
Z.txt
Y'a t-il une commande simple ?abc
def
Merci
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
Y.txtabc
Et je veux en output :def
Z.txt
Y'a t-il une commande simple ?abc
def
Merci
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())
Si tu peux copier directement dans un des deux fichiers:
python 2.x
python 3.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())
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())
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)
Merci pour vos réponses
Le problème c'est que ça me sort un fichier avec comme résultat
alors que je souhaiterais que ça saute une ligne :abcdef
abc
def
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':
Ainsi, grâce à rstrip:
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')
- 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.
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]
Partager