2009-05-15 10 views
2

J'ai besoin d'un peu d'aide pour télécharger un fichier tar à partir d'un site Web. Le site Web est configuré comme un formulaire où vous choisissez le fichier que vous voulez et cliquez sur soumettre, puis les fenêtres de téléchargement s'ouvre pour vous de choisir l'emplacement. J'essaie de faire la même chose dans le code (donc je n'ai pas à sélectionner manuellement chaque fichier). Jusqu'à présent, j'ai obtenu python 2.5.2 pour retourner une réponse mais c'est dans un socket._fileobject et je ne suis pas sûr maintenant comment convertir cela en un fichier sur mon ordinateur.Télécharger le fichier en utilisant la méthode post et python

est sortie du shell Python ci-dessous et les étapes que j'ai prises

Python 2.5.2 on win32 

IDLE 1.2.2  
>>> import urllib 
>>> import urllib2 
>>> url = 'http://website/getdata.php' 
>>> values = {'data[]': 'filex.tar'} 
>>> data = urllib.urlencode(values) 
>>> req = urllib2.Request(url,data) 
>>> response = urllib2.urlopen(req) 
>>> response 
addinfourl at 22250280 whose fp = <socket._fileobject object at 0x01534570 
>>> response.fp 
socket._fileobject object at 0x01534570 

Répondre

2

Append ceci:

myfile = open('myfile.tar', 'wb') 
shutil.copyfileobj(response.fp, myfile) 
myfile.close() 

response.fp est un objet de type fichier que vous pouvez lire, tout comme un fichier ouvert. shutil.copyfileobj() est une fonction simple qui lit à partir d'un objet de type fichier et écrit son contenu à un autre.

+1

Vous pouvez copier le fichier response.fp comme vous le souhaitez, mais shutil est sans aucun doute le meilleur pour la simplicité et la réutilisation du code bien testé. –

+1

Cela résout le problème Merci Richie pour votre aide. –

Questions connexes