masklinn í dag viðrar vel til loftárása | 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 :
>>> from urllib import urlretrieve >>> from re import compile, I >>> from shutil import move >>> from os.path import join >>> p = compile(r"filename=[\"'](?P<file>.+)[\"']$", I) >>> >>> tmp, response = urlretrieve('http://www.c64.com/games/download.php?id=1495') >>> m = p.search(response.getheader('content-disposition', '')) >>> if m: name = m.group('file') else: # quel nom donner si aucun n'est fourni? pass >>> 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 by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
|