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 ---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
|