OVH Cloud OVH Cloud

petit script

9 réponses
Avatar
sebastien_AEFFACER_
Bonjour,

Je commence à peine avec python (et en programmation).
Je voudrais écrire un script qui me permettrait d'écrire dans un fichier
le contenu (texte) d'une série d'autres fichiers.

Pouvez-vous me donner une piste pour réaliser cela facilement ?

Merci d'avance.
--
Sébastien Mengin
http://www.luxediteur.com

9 réponses

Avatar
tiissa
Sébastien Mengin wrote:
Je commence à peine avec python (et en programmation).
Je voudrais écrire un script qui me permettrait d'écrire dans un fichier
le contenu (texte) d'une série d'autres fichiers.

Pouvez-vous me donner une piste pour réaliser cela facilement ?


http://python.org/doc/2.4.1/lib/bltin-file-objects.html

Du coup, rapidement, ça pourrait ressembler à (pas testé) :

####
nom_du_fichier='toto'
liste_fichiers=['tata','titi','tutu']

fichier_sortie=open(nom_du_fichier,'w')

for nomfich in liste_fichiers:
f=open(nomfich)
lignes=f.readlines()
f.close()
fichier_sortie.writelines(lignes)

fichier_sortie.close()
####

Avatar
remi
Bonjour,

Bonjour,

Je commence à peine avec python (et en programmation).
Je voudrais écrire un script qui me permettrait d'écrire dans un fichier
le contenu (texte) d'une série d'autres fichiers.

Pouvez-vous me donner une piste pour réaliser cela facilement ?


Oui, à la hauteur de mes compétences ;-)
Tout dépend en fait de la taille de votre document "texte"
On peut imaginer qqch d'analogue à :
#############"
filein = open('fichier.txt','r')
fileout = open('fichier_final.txt','w')

lignes = filein.readlines() # on charge dans la chaine lignes le fichier
for i in lignes:
fileout.write(i) # recopie ligne par ligne

filein.close()
fileout.close()
##############
On peut sérailiser ce type de code pour plusieurs fichiers...

Sinon, il est plus économe en temps de calcul de manipuler le fichier de
sortie dans la mémoire vive directement avant de l'écrire en une seule
fois :

from cStringIO import StringIO
fout = StringIO()
et fout.write(....)

@+
Rémi.

Avatar
regis
Bonjour,

Je commence à peine avec python (et en programmation).
Je voudrais écrire un script qui me permettrait d'écrire dans un fichier
le contenu (texte) d'une série d'autres fichiers.

Pouvez-vous me donner une piste pour réaliser cela facilement ?

Merci d'avance.


On peut faire ça aussi



fd = open("fichier_dest","w")
for fichier in liste_de_fichiers:
fs = open(fichier,"r")
fd.write(f.read())
fs.close()
fd.close()

Régis

Avatar
Do Re Mi chel La Si Do
Bonsoir !

Petit problème de lecteur de news ?

Avec l'indentation, ce serait mieux (et aussi un 's' en plus) :

fd = open("fichier_dest","w")
for fichier in liste_de_fichiers:
fs = open(fichier,"r")
fd.write(fs.read())
fs.close()
fd.close()


bonne soirée

Michel Claveau
Avatar
tiissa
Sébastien Mengin wrote:
J'ai adapté en ce qui suit, mais je ne parviens pas à imposer un retour
chariot à la fin de chaque fichier (ligne) :
PLusieurs méthodes : soit rajouter une ligne vide à la liste avant de

l'écrire :

lignes=f.readlines()
lignes.append('n')

Soit écrire simplement une ligne vide après chaque fichier

fichier_sortie.writelines(lignes)
fichier_sortie.write('n')

Avatar
sebastien_AEFFACER_
tiissa writes:

http://python.org/doc/2.4.1/lib/bltin-file-objects.html

Du coup, rapidement, ça pourrait ressembler à (pas testé) :


Merci !

J'ai adapté en ce qui suit, mais je ne parviens pas à imposer un retour
chariot à la fin de chaque fichier (ligne) :

import os

nom_du_fichier='toto'
fichier_in_rep=os.listdir(".")
liste_fichiers=[]
for file in fichier_in_rep:
if file [-8:]==".select":
liste_fichiers.append(file)

fichier_sortie=open(nom_du_fichier,'w')

for i in liste_fichiers:
f=open(i)
lignes=f.readlines()
f.close()
fichier_sortie.writelines(lignes)

fichier_sortie.close()

--
Sébastien Mengin
http://www.luxediteur.com

Avatar
Sebastien Mengin
tiissa writes:

PLusieurs méthodes : soit rajouter une ligne vide à la liste avant de
l'écrire :

lignes=f.readlines()
lignes.append('n')

Soit écrire simplement une ligne vide après chaque fichier

fichier_sortie.writelines(lignes)
fichier_sortie.write('n')


Oui, c'est simple, en effet -- j'aurais dû y penser.
Merci beaucoup !

--
Sébastien
http://luxediteur.com

Avatar
regis
Certes, il manque un s mais aucun souci d'indentation :) (mozilla news)

Regis

Bonsoir !

Petit problème de lecteur de news ?

Avec l'indentation, ce serait mieux (et aussi un 's' en plus) :

fd = open("fichier_dest","w")
for fichier in liste_de_fichiers:
fs = open(fichier,"r")
fd.write(fs.read())
fs.close()
fd.close()


bonne soirée

Michel Claveau



Avatar
Paul Gaborit
À (at) Wed, 20 Apr 2005 09:41:47 +0400,
regis écrivait (wrote):
Certes, il manque un s mais aucun souci d'indentation :) (mozilla news)


Vous avez bien un problème d'indentation même si vous ne le voyez pas : vous
avez utilisé le caractère tabulation dans votre message. Or ce caractère n'est
pas toujours interprété avec la même taille (en nombre d'espaces équivalents)
suivant les plateformes.

Donc ce n'est pas parce que votre message se relit correctement dans votre
lecteur de news (et le mien au passage) que c'est le cas pour tout le monde.

Il faudrait que Mozilla remplace tout seul les tabulations pour le bon nombre
d'espaces pour ne plus avoir ce problème. En attendant, n'utilisez plus la
touche tabulation ! Pour écrire dy Python correct, c'est indispensable !

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>