Lecture, insertion/création fichier - Python - Programmation
Marsh Posté le 22-06-2012 à 11:11:35
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 :
|
Faudrait apprendre à utiliser with aussi: http://effbot.org/zone/python-with-statement.htm
Marsh Posté le 22-06-2012 à 12:24:02
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 ??
Marsh Posté le 22-06-2012 à 12:42:12
ccadic a écrit : Voici mon script et il fonctionne : #!/usr/bin/python fichier = open("LinearStatics_Plane_Strainmeshbarre.resu", 'r') resu = open("resultat.txt","w" ) Mais peut-on l'améliorer ?? |
oui.
Code :
|
Marsh Posté le 22-06-2012 à 13:27:59
Merci beaucoup !!
Cependant, j'aimerai savoir l'utilité et les bienfaits de cette amélioration par rapport à "l'ancien".
Marsh Posté le 22-06-2012 à 13:59:59
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.
Marsh Posté le 22-06-2012 à 14:06:35
OK merci de l'explication !!
Pouvez-vous me conseiller un site pour me documenter et faire "des TP" pour m'améliorer ??
Marsh Posté le 22-06-2012 à 14:23:53
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.
Marsh Posté le 20-06-2012 à 21:30:40
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.