Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1286 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  Python - urlretrieve - nom de fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Python - urlretrieve - nom de fichier

n°1812189
oghma
Posté le 14-11-2008 à 17:35:34  profilanswer
 

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.

mood
Publicité
Posté le 14-11-2008 à 17:35:34  profilanswer
 

n°1812218
masklinn
í dag viðrar vel til loftárása
Posté le 14-11-2008 à 18:04:31  profilanswer
 

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

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1812268
oghma
Posté le 14-11-2008 à 20:28:54  profilanswer
 

Tout simplement : merci !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  Python - urlretrieve - nom de fichier

 

Sujets relatifs
Comment récupérer des infos stockées dans un exe ?mettre un lien sur un fichier local
probleme css dans fichier .phpExtraction d'une colonne dans un fichier texte
[resolu] Lire un fichier texteComment traiter plusieurs fichier txt distant ??
SEO Fichier Sitemap, quel niveau de détailNaviguer un fichier index.pl
lister le contenu d'un fichier sur une seule ligneCharger un fichier XML en PHP
Plus de sujets relatifs à : Python - urlretrieve - nom de fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR