Python - urlretrieve - nom de fichier

Python - urlretrieve - nom de fichier - Python - Programmation

Marsh Posté le 14-11-2008 à 17:35:34    

Bonjour,
 
débutant en python.
 
Avec un navigateur l'url http://www.c64.com/games/download.php?id=1495 me retourne un fichier abc.zip.
 
Je souhaite obtenir ce fichier avec un script python.
 
j'ai réussi en partie avec ce script :
 
import urllib
url = 'http://www.c64.com/games/download.php?id=1495'
urllib.urlretrieve(url,'home/utilisateur/abc.zip')
 
Cependant, je souhaite ne pas préciser le nom du fichier (abc.zip qui est le nom du fichier normalement retourné ).
 
Comment faire ?
 
Merci pour vos réponses à venir.

Reply

Marsh Posté le 14-11-2008 à 17:35:34   

Reply

Marsh Posté le 14-11-2008 à 18:04:31    

oghma a écrit :

Bonjour,

 

débutant en python.

 

Avec un navigateur l'url http://www.c64.com/games/download.php?id=1495 me retourne un fichier abc.zip.

 

Je souhaite obtenir ce fichier avec un script python.

 

j'ai réussi en partie avec ce script :

 

import urllib
url = 'http://www.c64.com/games/download.php?id=1495'
urllib.urlretrieve(url,'home/utilisateur/abc.zip')

 

Cependant, je souhaite ne pas préciser le nom du fichier (abc.zip qui est le nom du fichier normalement retourné ).

 

Comment faire ?

 

Merci pour vos réponses à venir.


C'est pas géré par urlretrieve donc il faut le faire "manuellement":

 
  • Récupères ton fichier sans fournir de nom (il va être stocké dans une location temporaire), mais récupère la sortie de urlretrieve (un tuple (filename, response))
  • Dans la réponse, récupère le header content-disposition
  • Dans ce header, récupère la partie filename
  • Renommes ton fichier en utilisant l'info récupérée


Ca devrait donner un truc genre:

Code :
  1. >>> from urllib import urlretrieve
  2. >>> from re import compile, I
  3. >>> from shutil import move
  4. >>> from os.path import join
  5. >>> p = compile(r"filename=[\"'](?P<file>.+)[\"']$", I)
  6. >>>
  7. >>> tmp, response = urlretrieve('http://www.c64.com/games/download.php?id=1495')
  8. >>> m = p.search(response.getheader('content-disposition', ''))
  9. >>> if m:
  10.     name = m.group('file')
  11. else:
  12.     # quel nom donner si aucun n'est fourni?
  13.     pass
  14.  
  15. >>> move(tmp, join(destination_folder, name))


Message édité par masklinn le 14-11-2008 à 18:05:11

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box, and replicate and expand beyond their wildest dreams by throwing away the limits imposed by overbearing genetic r
Reply

Marsh Posté le 14-11-2008 à 20:28:54    

Tout simplement : merci !

Reply

Sujets relatifs:

Leave a Replay

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