Je tente de déterminer la taille d'un fichier téléchargé en python avant de l'analyser et de le manipuler avec BeautifulSoup. (J'ai l'intention de mettre à jour bientôt ElementTree, mais après avoir brièvement joué avec, cela ne résout pas le problème que je pose ici, autant que je peux voir).détermination de la taille de l'objet fichier avant l'utilisation de l'objet fichier
import urllib2, BeautifulSoup
query = 'http://myexample.file.com/file.xml'
f = urllib2.urlopen(query)
print len(f.read())
soup = BeautifulSoup.BeautifulStoneSoup(f.read())
Ce code vacille parce que quand je read()
le fichier la première fois en len()
, il atteint naturellement un EOF et ainsi l'objet de fichier est alors vide le temps que je veux y accéder avec BeautifulSoup. Mon idée initiale était simplement de copier l'objet avec une ligne fcopy = f
, mais cela m'a amené à apprendre que je ne fais que référencer l'objet sous-jacent et ne rien gagner.
Je pensais alors que fcopy = copy.copy(f)
créerait une copie vraie de l'objet, mais apparemment pas comme la lecture de f fait encore en sorte que fcopy soit un objet de fichier vide.
J'ai même lu sur les objets passant comme paramètres à des fonctions afin de contourner cela et essayé le code suivant
import urllib2, BeautifulSoup
def get_bytes(file):
return len(file.read())
query = 'http://myexample.file.com/file.xml'
f = urllib2.urlopen(query)
print(get_bytes(f))
soup = BeautifulSoup.BeautifulStoneSoup(f.read())
Mais j'ai eu le même problème. Comment puis-je déterminer la taille du fichier de cet objet sans détruire le fichier?
doh! Donc, flippin évident! Merci :) – fearoffours