darfeuille
Messages postés63Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention25 juillet 2005
-
13 juin 2005 à 11:28
taz_iup
Messages postés179Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention21 mai 2014
-
15 juin 2005 à 10:19
Salut,
Etant novice en python, je bloque sur un truc :
Dans un de mes programmes, a un moment, je dois recopier un
fichier (en le modifiant) d'un répertoire vers un autre. Je sais que le
nouveau fichier ne sera pas plus gros que celui d'origine.
Mais étant donné que ce sont des fichiers de plusieurs GO, il me faut controler s'il y a assez d'espace libre.
C'est pourquoi :
Pouvez vous me dire comment je peux connaitre :
1/ la taille d'un fichier
2/ l'espace libre dans un répertoire
De maniere portable (linux, win et mac)
J'ai cherché dans os.path, qui contient des outils assez proches, mais je n'ai rien trouvé de tel.
taz_iup
Messages postés179Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention21 mai 20143 13 juin 2005 à 11:57
j'ai trouve ceci sur python.org
la methode stat du module os permet de retrouver la taille d'un
fichier. et la méthode statvfs permet de retrouver la taille libre mais
n'est disponible que sous UNIX. c'est déjà un début...
darfeuille
Messages postés63Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention25 juillet 2005 13 juin 2005 à 13:26
alors, voila ou j'en suis :
ma question 1 etait : comment savoir la taille d'un fichier.
Et effectivement stat marche impecc merci beaucoup :)
pour savoir la place libre, je ne vois pas quelle membre de
statvfs la renvoie. Elle renvoie plein de trucs, mais pas la taille
libre (enfin, je n'ai pas l'impression). Ce n'est ni "free nodes" ni
"free blocks" a priori
Je vais continuer a chercher, et je te remercie beaucoup :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
darfeuille
Messages postés63Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention25 juillet 2005 13 juin 2005 à 17:00
J'ai fini tout le reste du programme, je vais donc ne plus me
concentrer que sur ca. J'ai cherché comment connaître la taille d'un
bloc, mais je ne trouve pas.
ca doit pourtant bien exister, mais les seuls trucs que j'ai trouvé c'est que c'est "variable", ce qui ne m'aide pas beaucoup :)
Je tiens au courant de ce que je trouve, et en attendant, si quelqu'un a une solution, elle sera vraiment la bienvenue :)
ps : c'est marrant la programmation, des fois des trucs super
compliques se font tout seuls, et des fois des trucs qui paraissent
basiques comme ca, et ben on bloque dessus.
Perform a <tt>statvfs()</tt> system call on the given path. The
return value is an object whose attributes describe the filesystem on
the given path, and correspond to the members of the
<tt>statvfs</tt> structure, namely:
<tt>f_frsize</tt>,
<tt>f_blocks</tt>,
<tt>f_bfree</tt>,
<tt>f_bavail</tt>,
<tt>f_files</tt>,
<tt>f_ffree</tt>,
<tt>f_favail</tt>,
<tt>f_flag</tt>,
<tt>f_namemax</tt>.
Availability: Unix.
For backward compatibility, the return value is also accessible as a
tuple whose values correspond to the attributes, in the order given above.
The standard module <tt>statvfs</tt>
defines constants that are useful for extracting information
from a <tt>statvfs</tt> structure when accessing it as a sequence; this
remains useful when writing code that needs to work with versions of
Python that don't support accessing the fields as attributes.
Changed in version 2.2:
Added access to values as attributes of the returned object.
Statfvs Module
The <tt>statvfs</tt> module defines constants so interpreting the result
if <tt>os.statvfs()</tt>, which returns a tuple, can be made without
remembering ``magic numbers.'' Each of the constants defined in this
module is the index of the entry in the tuple returned by
<tt>os.statvfs()</tt> that contains the specified information.
* : <tt id =\"l2h-1789\" xml:id= \"l2h-1789\">F_BSIZE</tt></gras>
Preferred file system block size.
* : <tt id =\"l2h-1790\" xml:id=\"l2h-1790\">F_FRSIZE</tt></gras>
Fundamental file system block size.
darfeuille
Messages postés63Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention25 juillet 2005 14 juin 2005 à 08:25
Merci taz_iup.
Etant donné qu'il me faut faire un programme
portable, marchant dans tout os, mon responsable m'a dit de laisser
tomber, que ca n'a pas d'importance, qu'on n'a pas le temps, et
simplement, grace a la méthode stat, si le fichier dépasse 1.5GO, j'en
informe l'utilisateur. Sinon, j'aime bien le python, c'est simple,
sympa et pas très lent pour un langage interprété.
darfeuille
Messages postés63Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention25 juillet 2005 15 juin 2005 à 08:14
ouaip, moi aussi je trouve ca bizarre. Surtout que ca doit etre assez fréquent comme besoin.
Dans l'êtat actuel des choses, j'ai laissé faire, je regarde
juste la taille du fichier pour avertir s'il dépasse 1 GO. Comme ce
programme est destiné a des chimio-informaticiens, on peut envisager
qu'ils sauront en tenir compte . Mais
quand j'aurais fini le reste, je reviendrais dessus pour faire ce test
proprement, et je mettrais le code source ici (si ca marche bien sur :p)