OVH Cloud OVH Cloud

Obtenir la taille d'un fichier en cours d'écritue

13 réponses
Avatar
Vincent M
Bonjour,

je souhaite obtenir la taille d'un fichier en cours d'écriture sur DD à
partir de urllib.urlretrieve.

Peut-on le faire et comment ? (je suis sous windows)

Merci

Vincent

10 réponses

1 2
Avatar
R12y
je souhaite obtenir la taille d'un fichier en cours d'écriture sur DD à
partir de urllib.urlretrieve.
Peut-on le faire et comment ?


In [4]: import urllib
In [5]: (fn,h)=urllib.urlretrieve("http://www.locataire-serveur.info")
In [6]: for k in h.keys():
...: print k + ':', h[k]
...:
content-length: 19872
via: 1.0 www.locataire-serveur.info
expires: Tue, 03 Jan 2006 07:11:04 GMT
server: Zope/(Zope 2.8.3-3.fc4, python 2.4.1, linux2) ZServer/1.1 CPS/3.3
last-modified: Tue, 03 Jan 2006 07:11:04 GMT
connection: close
date: Tue, 03 Jan 2006 07:11:04 GMT
content-type: text/html; charset=ISO-8859-15

(je suis sous windows)


Faut essayer les autres :-)

--
Telephone portable "intelligent" (SmartPhone) GSM, GPRS,...
Il est sous Linux, ne coute pas trop cher,...
http://www.it2l.com/product_info.php?cPath‘&products_idE6

Avatar
Méta-MCI
Bonjour !

Cette méthode permettra d'obtenir la taille du document/objet téléchargé, et
non en cours d'écriture sur disque.
De plus, il faudra avoir complètement téléchargé le document, avant d'avoir
l'information.

Enfin, si ça suffit au besoin, tant mieux.

@-salutations

Michel Claveau
Avatar
Vincent M

Cette méthode permettra d'obtenir la taille du document/objet téléchargé, et
non en cours d'écriture sur disque.


Je l'avais déjà en faisant :
urllib.urlopen(url).info()['Content-Length']

De plus, il faudra avoir complètement téléchargé le document, avant d'avoir
l'information.


Merci pour l'info

Enfin, si ça suffit au besoin, tant mieux.


Le but du jeu, c'est de faire une barre de progression pour le
téléchargement. Comment obtenir un int cohérent pour faire progresser un
wxGauge ?

Merci

Vincent

Avatar
Eric Deveaud
Vincent M wrote:
Bonjour,

je souhaite obtenir la taille d'un fichier en cours d'écriture sur DD à
partir de urllib.urlretrieve.



filehandle = open(fichier, 'w')
filehandle.tell() # te donne la position du pointeur d'écriture.

Eric

--
je me connecte grâce à Wanadoo et je trouve que la durée de vie des
messages qu'ils ont imposé est trop court. J'y vois presque une forme
de censure basée sur une conservation réduite des traces écrites.
-+- Ed in GNU : Et gravé dans le marbre, ça ne serait pas mieux ? -+-

Avatar
R12y
On Tue, 03 Jan 2006 08:35:53 +0100, Méta-MCI wrote:
Enfin, si ça suffit au besoin, tant mieux.


Que cela suffise ou pas, j'ai juste tenté de répondre à la question en
présentant les informations disponibles.
Pour le posteur initial, il "suffit" peut-être de voir de près comment
fonctionne HTTP, et ça devrait être possible.

--
Telephone portable "intelligent" (SmartPhone) GSM, GPRS,...
Il est sous Linux, ne coute pas trop cher,...
http://www.it2l.com/product_info.php?cPath‘&products_idE6

Avatar
Méta-MCI
Re

Pour le posteur initial, il "suffit" peut-être de voir de près comment
fonctionne HTTP, et ça devrait être possible.




Je pense que tu as raison, il faut "rentrer" dans HTTP. Les fonctions
toutes prêtes, genre "urlretrieve" sont trop atomiques pour gérer des
évènements intermédiaires.

@-salutations

Michel Claveau



Avatar
Vincent M
Re

Pour le posteur initial, il "suffit" peut-être de voir de près comment
fonctionne HTTP, et ça devrait être possible.




Je pense que tu as raison, il faut "rentrer" dans HTTP. Les fonctions
toutes prêtes, genre "urlretrieve" sont trop atomiques pour gérer des
évènements intermédiaires.



D'après vos réponses et mes recherches, je vais être obligé d'abandonner
urlretrieve.
Je vais vraisemblablement lire avec urlopen puis écrire à partir de
cette lecture. Là j'aurai accès au fichier en cours d'écriture.

Merci de vos réponses

Vincent




Avatar
R12y
Pour le posteur initial, il "suffit" peut-être de voir de près
comment fonctionne HTTP, et ça devrait être possible.
Je pense que tu as raison, il faut "rentrer" dans HTTP. Les fonctions



toutes prêtes, genre "urlretrieve" sont trop atomiques pour gérer des
évènements intermédiaires.
D'après vos réponses et mes recherches, je vais être obligé d'abandonner

urlretrieve.
Je vais vraisemblablement lire avec urlopen


Je ne connait pas vraiment HTTP sur le bout des doigts, mais il est
certain que la taille de la ressource à télécharger peut-être connue à
l'avance, je ne sais ou ni comment exactement.

--
Telephone portable "intelligent" (SmartPhone) GSM, GPRS,...
Il est sous Linux, ne coute pas trop cher,...
http://www.it2l.com/product_info.php?cPath‘&products_idE6





Avatar
Hexade
Pour connaître la taille de la ressource par HTTP, il faut faire une
requête HEAD et consulter la cléf Content-Lenght.

Ne serait-il pas plus simple de faire un os.path.getsize ?
Avatar
R12y
On Tue, 03 Jan 2006 11:53:54 -0800, Hexade wrote:

Ne serait-il pas plus simple de faire un os.path.getsize ?


Bah, d'après moi il faut voir comment wget et Cie s'en sortent et porter
le tout en Python.

--
Telephone portable "intelligent" (SmartPhone) GSM, GPRS,...
Il est sous Linux, ne coute pas trop cher,...
http://www.it2l.com/product_info.php?cPath‘&products_idE6

1 2