longueur d'un fichier (python)

longueur d'un fichier (python) - Python - Programmation

Marsh Posté le 26-05-2004 à 11:16:25    

Bonjour,
j'ai besoin de connaître la longueur de mon fichier (en nombre de caractères) pour pouvoir récuperer des données à l'intérieur. Le problème est que len(file) ne fonctionne pas. Peut être faudrait-il transformer mon fichier en chaîne de caractères mais je ne vois pas comment. Voila j'espère que vous pourrez m'aider....
 
anna

Reply

Marsh Posté le 26-05-2004 à 11:16:25   

Reply

Marsh Posté le 26-05-2004 à 12:07:56    

Code :
  1. fs = open("source.txt", 'r')
  2. texte = fs.read()
  3. longueur=len(texte)
  4. fs.close()


 
Ca devrait marcher

Reply

Marsh Posté le 26-05-2004 à 12:09:23    

En Python tu t'en fiches du nb de caractères de ton fichier. tu fais :

Code :
  1. >>> f1 = file('essai.txt','r')
  2. >>> list = f1.readlines()
  3. >>> list
  4. ['salut les gars!\n', 'Ca va votre vie?\n', 'Et les enfants?\n']


Et voilà t'as toutes les données de ton fichier dans une list bien pratique pour les manipulations ultérieures.

Reply

Marsh Posté le 26-05-2004 à 12:23:49    

laurent2a a écrit :

Code :
  1. fs = open("source.txt", 'r')
  2. texte = fs.read()
  3. longueur=len(texte)
  4. fs.close()


 
Ca devrait marcher

bordel, mais y a personne qui sait faire du python correctement ici
 

Code :
  1. texte = open("source.txt" ).read()
  2. l = len(texte)


 
 
chaica > t'as la palme de la connerie, tu viens d'écraser la fonction builtin list
 

Code :
  1. lignes = open("fichier" ).readlines()

Reply

Marsh Posté le 26-05-2004 à 15:54:01    

nickel....merci beaucoup!!!

Reply

Marsh Posté le 26-05-2004 à 22:13:48    

file à la place de open je dirais même.
 
Sinon tu peux faire:
os.stat(path).st_size
 
ca t'évites de lire tout le fichier et de le charger en mémoire.

Reply

Marsh Posté le 07-10-2004 à 20:28:10    

Taz a écrit :

bordel, mais y a personne qui sait faire du python correctement ici
 

Code :
  1. texte = open("source.txt" ).read()
  2. l = len(texte)


 


 
justement je me posais la question, quand on récupère le contenu d'un fichier de cette facon, on a donc pas d'objet fichier.
comment on fait pour fermer le fichier ? ca se fait tout seul ?  :heink: ou on s'en fout en fait que ce soit ouvert ou fermé...

Reply

Marsh Posté le 07-10-2004 à 20:29:26    

bah oui il se ferme tout seul. Python __a__ des destructeurs (opérateur __del__)

Reply

Marsh Posté le 07-10-2004 à 20:38:20    

ok  :jap:

Reply

Marsh Posté le 07-10-2004 à 20:45:11    

Notez qu'en fesant comme ça, vous courrez le risque de causer des bugs dans Jython et IronPython car ceux-ci utilisent exclusivement le GC pour detruire les objets et qu'on ne peut jamais savoir quand celui-ci va agir.

Reply

Marsh Posté le 07-10-2004 à 20:45:11   

Reply

Marsh Posté le 07-10-2004 à 20:54:07    

d'ailleurs j'ai pas regardé la spécification de python, mais il me semble quand même que l'appel aux destructeurs est requis. Je pense pas que ça soit le cas avec Jython. Du reste, c'est la nature des GC : ça doit pas trop poser de problèmes (sauf ressources critiques, genre ouverture de milliers de fichiers, il vaut mieux fermer dès que possible, explicitement pour libérer un descripteur).

Reply

Marsh Posté le 07-10-2004 à 21:01:02    

tiens, je serais curieux de voir ce qu'impose les règles de portées sur ça, il me semblerait normal que ça force un peu là main aux destructeurs quand même

Reply

Marsh Posté le 07-10-2004 à 21:09:36    

Accessoirement si un jour vous avez besoin de récupérer la taille d'un fichier (je parle bien de la taille), c'est os.path.getsize(file_path) (et non ce que fait cassidy)


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

Marsh Posté le 07-10-2004 à 21:11:38    

les 2 sont OK

Reply

Marsh Posté le 07-10-2004 à 21:45:45    

Taz a écrit :

les 2 sont OK


oui mais vu qu'on a un joli wrapper a notre disposition et a moins d'avoir besoin d'autres elements issus de os.stats() c'est plus simple, plus clair et plus lisible de l'utiliser
 
non?
 [:totoz]


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

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed