IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

Comment savoir si un fichier existe sur une page web ?


Sujet :

Réseau/Web Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 35
    Points : 21
    Points
    21
    Par défaut Comment savoir si un fichier existe sur une page web ?
    Bonjour,

    J'aimerai savoir s'il existe un moyen de savoir si un fichier existe sur une page web ? Parce que la commande urllib.urlretrieve permet de copier un fichier existant mais bizarrement il copie quelque chose même si le fichier n'existe pas. J'aimerai pouvoir le détecter avant de l'utiliser...

    Merci

  2. #2
    Membre expérimenté Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Points : 1 728
    Points
    1 728
    Par défaut
    quelques explications sur voidspace.
    "Etre conscient de la difficulté permet de l'éviter.."
    Lao-Tseu.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    Voilà, j'ai compris la gession des erreurs maintenant.

    Pour ceux que ça peut aider voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import urllib2
    from urllib2 import Request, urlopen, URLError, HTTPError
     
    req = urllib2.Request('http://www.google.com/intl/fr_ALL/images/logo.gif')
    try:
    	r=urllib2.urlopen(req)
    except:
    	print 'Error'
    else:
    	print 'This file exist'
    Par contre je n'ai pas compris pourquoi je dois faire précéder from...import d'un simple import (sinon j'ai une erreur) mais bon j'apprends c'est normal.

    Merci pour ton aide pacificator.

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Si tu importes par "from urllib2 import Request, urlopen, URLError, HTTPError", il ne faut plus préfixer avec le nom du module.

    Avec ton code corrigé ainsi, il n'y a plus d'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    from urllib2 import Request, urlopen, URLError, HTTPError
     
    req = Request('http://www.google.com/intl/fr_ALL/images/logo.gif')
    try:
    	r=urlopen(req)
    except:
    	print 'Error'
    else:
    	print 'This file exist'
    Tyrtamos
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    @tyrtamos: C'est curieux mais parfois il me donne une erreur quand je n'utilise pas le premier import. Et si j'ajoute la ligne que tu as enlevé je n'ai plus le problème.

    NameError: global name 'urllib2' is not defined

    Tu as surement raison mais comme je débute une chose doit m'échapper quelque part.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    Malheureusement ce code ne fonctionne pas dans tous les cas.

    En effet certains serveurs web ne répondent pas par une erreur 404 à la demande d'un fichier qui n'existe pas: ils affichent une page qui résume le service présent sur le site. Résultat urlopen recoit une réponse et considère que le fichier demandé existe alors que c'est faux.

    Quelqu'un a-t-il une autre solution ? Il faudrait vérifier que la réponse concerne bien le fichier demandé ou peut être est-il possible de demander la taille du fichier présent sur le serveur ?

    J'espère que le problème a une solution. Si vous avez juste des idées n'hésitez pas.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    J'ai trouvé une solution: il suffit de mettre le test d'erreur sur la fonction de copie ( urllib.urlretrieve(currentWebFile,currentLocalFile) ) au lieu de urlopen et dans ce cas il donne une erreur quand le fichier n'existe pas.
    Je ne sais pas pourquoi je n'ai pas commencé par là. Probablement parce que j'ai suivi l'exemple sur le site...

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    Même de cette façon j'ai encore des problèmes mais j'ai trouvé une autre solution qui semble meilleure: Utiliser les données d'information liés à l'ouverture de l'URL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    handle= urlopen(theURL)
    currentInfos=handle.info()
    Il y a par exemple une ligne qui décrit le type de fichier ouvert. Si le programme attend un fichier ZIP par ex. et que le type renvoyé est text/HTML alors on sait que le serveur nous a renvoyé sur une autre page...

Discussions similaires

  1. Afficher le contenu d'un fichier xml sur une page web
    Par pitchu dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 26/02/2015, 16h03
  2. Comment animé un plan de maison sur une page Web ?
    Par creepy75 dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 02/10/2014, 21h42
  3. Afficher un fichier PDF sur une page Web
    Par kevinf dans le forum Langage
    Réponses: 3
    Dernier message: 26/04/2012, 14h16
  4. [SP-2010] Forcer l'ouverture d'un fichier Excel sur une page Web
    Par magic-moad dans le forum SharePoint
    Réponses: 5
    Dernier message: 21/09/2011, 11h05
  5. Chargement rapide d'un fichier SWF sur une page web
    Par cyberlp dans le forum Flash/Flex
    Réponses: 2
    Dernier message: 31/03/2010, 19h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo