Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1135 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  Lecture, insertion/création fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lecture, insertion/création fichier

n°2146607
ccadic
Posté le 20-06-2012 à 21:30:40  profilanswer
 

Bonjour,
 
Je découvre python depuis ce matin et je sature un peu là.
 
Mon soucis est que j'ai un code de calcul qui me donne un fichier résultat et j'aimerai faire un script python afin de créer un fichier txt avec juste le tableau que le fichier résultat me donne.
 
C'est pour cela que je vous demande dans un premier temps, quelle était la demarche pour lire seulement les lignes 5 à 10 d'un fichier(mais pas les 5 premières), puis la démarche pour copier ces lignes dans un fichier txt qu'il faut créer.
 
voici mon script pour le moment :
 
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
fichier = open("resultat.resu", "r" )
contenu = fichier.read()
print(contenu)
fichier.close()
 
Je vous remercie d'avance de votre aide.


---------------
C'est sympa d'être important mais c'est plus important d'être sympa.
mood
Publicité
Posté le 20-06-2012 à 21:30:40  profilanswer
 

n°2146753
masklinn
í dag viðrar vel til loftárása
Posté le 22-06-2012 à 11:11:35  profilanswer
 

ccadic a écrit :

C'est pour cela que je vous demande dans un premier temps, quelle était la demarche pour lire seulement les lignes 5 à 10 d'un fichier(mais pas les 5 premières)


La manière la plus précise est d'utiliser seek() sur le fichier pour tenter de trouver la 5e ligne.
 
La manière la plus simple, c'est de lire et ignorer les premières lignes, soit avec file.readlines (qui renvoie un objet list) et une slice, soit (mieux, pour autant que je sois concerné, mais plus avancé) en traitant le fichier comme un itérable et en utilisant islice dessus.

ccadic a écrit :

puis la démarche pour copier ces lignes dans un fichier txt qu'il faut créer.


Ouvrir le fichier en mode d'écriture, puis envoyer du contenu dedans (avec writelines() ou write(), attention ils l'ajoutent pas de newline il faut soit les avoir dans le contenu d'origine soit les ajouter à la main).

ccadic a écrit :


voici mon script pour le moment :

Code :
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3.  
  4. fichier = open("resultat.resu", "r" )
  5. contenu = fichier.read()
  6. print(contenu)
  7. fichier.close()


 
Je vous remercie d'avance de votre aide.


Faudrait apprendre à utiliser with aussi: http://effbot.org/zone/python-with-statement.htm


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2146778
ccadic
Posté le 22-06-2012 à 12:24:02  profilanswer
 

Voici mon script et il fonctionne :
 
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
fichier = open("LinearStatics_Plane_Strainmeshbarre.resu", 'r')
lines = fichier.readlines()
fichier.close()
 
resu = open("resultat.txt","w" )
for ligne in lines[36:77]:
    resu.write(ligne)
resu.close()
 
Mais peut-on l'améliorer ??

n°2146779
masklinn
í dag viðrar vel til loftárása
Posté le 22-06-2012 à 12:42:12  profilanswer
 

ccadic a écrit :

Voici mon script et il fonctionne :

 

#!/usr/bin/python
# -*- coding: utf-8 -*-

 

fichier = open("LinearStatics_Plane_Strainmeshbarre.resu", 'r')
lines = fichier.readlines()
fichier.close()

 

resu = open("resultat.txt","w" )
for ligne in lines[36:77]:
    resu.write(ligne)
resu.close()

 

Mais peut-on l'améliorer ??


oui.

Code :
  1. from itertools import islice
  2.  
  3. with open('LinearStatics_Plane_Strainmeshbarre.resu', 'r') as input:
  4.    to_write = islice(input, 36, 77)
  5.    with open('resultat.txt', 'w') as output:
  6.        output.writelines(to_write)


Message édité par masklinn le 22-06-2012 à 12:42:27

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2146788
ccadic
Posté le 22-06-2012 à 13:27:59  profilanswer
 

Merci beaucoup !!
 
Cependant, j'aimerai savoir l'utilité et les bienfaits de cette amélioration par rapport à "l'ancien".

n°2146801
masklinn
í dag viðrar vel til loftárása
Posté le 22-06-2012 à 13:59:59  profilanswer
 

ccadic a écrit :

Merci beaucoup !!Cependant, j'aimerai savoir l'utilité et les bienfaits de cette amélioration par rapport à "l'ancien".


Plus court et plus moderne, moins de code donc moins de chances de bugs
 
`with` assure que le fichier sera correctement fermé dans tous les cas une fois qu'on sort de sa scope, même s'il y a une exception ou autre.
 
readlines va lire tout le fichier en une fois, puis créer une liste en mémoire. Itérer sur le fichier directement évite de charger la fin du fichier et permet d'utiliser le fichier dans des contextes qui n'ont pas besoin de savoir que c'est un fichier.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2146806
ccadic
Posté le 22-06-2012 à 14:06:35  profilanswer
 

OK merci de l'explication !!
 
Pouvez-vous me conseiller un site pour me documenter et faire "des TP" pour m'améliorer ??


Message édité par ccadic le 22-06-2012 à 14:07:31
n°2146813
masklinn
í dag viðrar vel til loftárása
Posté le 22-06-2012 à 14:23:53  profilanswer
 

Là comme ça, pas spécialement. Je suggérerais de suivre les mailing lists python-list@python.org et tutor@python.org, et de suivre un tuto genre learning python the hard way. Peut-être également trainer sur le tag Python dans stackoverflow ça permet d'apprendre des choses.
 
Après, souscrire au RSS planet python.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  Lecture, insertion/création fichier

 

Sujets relatifs
Création appli facebook simpleInsertion checkbox dans page html et affichage valeur
Récupérer tous les noms de fichier dans un dossier[VBA] Enregistrement de valeurs dans un fichier texte
Lire un fichier en Shell avec une boucleCréation d'un nouveau tableau sans cellule vide
Plus de sujets relatifs à : Lecture, insertion/création fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR