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

Python Discussion :

requests // DDL fichier // besoin d'explication du code


Sujet :

Python

  1. #1
    Nouveau membre du Club Avatar de jer666
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Par défaut requests // DDL fichier // besoin d'explication du code
    Bonjour,
    je reprends ces dernier jours python pour tenter de me créer un petit script pour telecharger des fichiers.

    après plusieurs recherche, je penses que la bibliothèque requests est la plus adapté et voici un code qui fonctionne, mais dont je ne comprends pas tout.

    pourriez vous m'aider a comprendre? la doc, bien que très bien faites, est un peu hard pour un vieux comme moi qui reprends après plusieurs années d'arrêt


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
     
    import requests
     
     
    url = "http://monlien.com/versmonfichier.mp3"
    fileName = 'monfichierfinal.mp3'
     
    req = requests.get(url)
     
    file = open(fileName, 'wb') 
     
    #c'est bien entendu cette partie que je ne comprends pas trop
    for chunk in req.iter_content(100000):
     
        file.write(chunk)
     
    file.close()
    merci par avance

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 715
    Par défaut
    Citation Envoyé par jer666 Voir le message
    pourriez vous m'aider a comprendre?
    C'est une simple boucle "for" qui lit la réponse par paquets de 100000 bytes et qui sont écrits dans un fichier.
    Les détails techniques sont racontés ici.
    Peut être que vous devriez expliciter ce que vous ne comprenez pas (si c'est pas la boucle for c'est certains passages de la documentation).
    (pour moi, la question serait: "où est l'intérêt d'iter_content avec un buffer aussi grand sans avoir précisé stream=True?").

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Nouveau membre du Club Avatar de jer666
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Par défaut
    merci pour la réponse rapide.

    cela vous semble simple (pour reprendre vos termes) car vous comprenez, et moi compliqué, car je ne comprends pas les termes qui compose la boucle.

    je comprends la structure de la boucle, je ne comprends pas les termes chunk et iter_content.
    et je ne comprends pas non plus votre message:"pour moi, la question serait: "où est l'intérêt d'iter_content avec un buffer aussi grand sans avoir précisé stream=True?"

    d'après ce que j'ai pu comprendre, chunk est le fichier téléchargé découpé, iter_content est une section de cette découpe, cette découpe est utilisée pour maîtriser la quantité de donnée, la rapidité? et isoler pourquoi pas les erreurs?

    je ne suis pas certain que cela soit que python qui me gène, mais sûrement aussi un manque de connaissance sur la manière qu'un ordinateur télécharge et prends en charge ce téléchargement.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 715
    Par défaut
    Citation Envoyé par jer666 Voir le message
    je ne suis pas certain que cela soit que python qui me gène, mais sûrement aussi un manque de connaissance sur la manière qu'un ordinateur télécharge et prends en charge ce téléchargement.
    A part vous suggérer la lecture de tutos., je ne vois pas comment vous aider.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Nouveau membre du Club Avatar de jer666
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Par défaut
    hum, en quête de connaissance et en recherche de comment est reconstituer un fichier telecharger ou comment mon pc gère le transfert des données, la base tampon oui plus que jamais si vous avez des adresses/livres, je suis preneur.

    Je vous le redis, je comprends la structure mais pas le contenu, or les tutos python parlent de la structure du langage.

    pour m'aider, il suffit de lire le code en français, je prête à l'exercice, je vous invite à me corriger (pas les fautes ) .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    import requests
     
     
    url = "http://monlien.com/versmonfichier.mp3"
    fileName = 'monfichierfinal.mp3'
     
    req = requests.get(url)
     
    file = open(fileName, 'wb') 
     
    #c'est bien entendu cette partie que je ne comprends pas trop
    for chunk in req.iter_content(100000):
     
        file.write(chunk)
     
    file.close()
    ce lirait
    J'importe la bibliothèque requests
    j’établis ma variable url avec l'adresse de mon fichier a télécharger
    le nom final de mon fichier et l'adresse à l'aquelle je l'enregistre est détermine dans la variable fileName
    j'établis la variable req qui "charge" ma variable url
    j'établis ma variable file, qui est mon fichier "réceptacle" et lui donne un "mode d'acces" écriture binaire (bien que je sois sous linux et qu'il me semble que cela soit inutile, j'aimerai que mon code fonctionne a terme sous windows)

    la je suis moins sur:
    Je telecharge chaque "partie" de 100ko (chunk) de mon fichier d'origine, et j'incrémente mon fichier de destination ?
    ou plutôt je charge mon fichier 100ko à la fois via une boucle?

    je clôture le fichier (close) (que j'ai ouvert open)


    merci encore de votre aide...


    concernant votre phrase "où est l'intérêt d'iter_content avec un buffer aussi grand sans avoir précisé stream=True?"

    si j'ai bien compris, le buffer est la base tampon entre le fichier a téléchargé et celui téléchargé, à chaque fois que je charge un chunk (partie de ton fichier) il transite via ce base tampon.
    A avoir un buffer aussi grand (c'est quoi c'est les 100ko??) j'aurais pu mettre stream a true, ca aurait permis de charger le fichier dans son ensemble et non pas partie par partie.
    c'est ca?
    le test charge un mp3, a terme ca devra charger des fichiers de plus Go... je suppose que cette "technique" de "découpage" sera plus adéquate non?

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 715
    Par défaut
    Citation Envoyé par jer666 Voir le message
    la je suis moins sur:
    Je telecharge chaque "partie" de 100ko (chunk) de mon fichier d'origine, et j'incrémente mon fichier de destination ?
    ou plutôt je charge mon fichier 100ko à la fois via une boucle?

    je clôture le fichier (close) (que j'ai ouvert open)
    En gros, c'est çà.
    Mais comme vous n'avez pas positionné stream, vous auriez pu simplement écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    req = requests.get(url)
     
    file = open(fileName, 'wb') 
    file.write(req.content) 
    file.close()
    car dans ce cas, çà attend que le contenu soit chargé avant de pouvoir passer aux instructions suivantes. Et s'il est déjà chargé, on peut l'écrire d'un seul block.

    Ecrire "for chunk in req.iter_content..." (sans stream=True) complique la compréhension de ce que fait ce code car il fait comme si on récupère le gros fichier par petits bouts mais en fait pas du tout.
    note: et la documentation n'est pas claire sur ce que çà fait dans ce cas là.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Nouveau membre du Club Avatar de jer666
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Par défaut
    ok, merci beaucoup, même si votre réponse apporte plus de questions...

    je n'avais pas vu que la doc francaise n'avait pas tous les paragraphe en comparaison à l'anglaise.
    ce passage n'était pas présent:

    http://docs.python-requests.org/en/l...coded-requests

    et ca change pas mal de chose.

Discussions similaires

  1. Besoin d'explication d'une ligne de codes
    Par cdevl32 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 16/10/2007, 22h53
  2. besoin explication partie code, svp.
    Par lolymeupy dans le forum ASP.NET
    Réponses: 3
    Dernier message: 03/08/2007, 13h59
  3. [PHP-JS] Besoin d'explication de code
    Par mastertiger dans le forum Langage
    Réponses: 3
    Dernier message: 18/05/2007, 23h16
  4. besoin d'explications sur un code
    Par NAHIAG dans le forum C
    Réponses: 8
    Dernier message: 28/05/2006, 12h37
  5. Besoin d'explications sur un bout de code
    Par zizitop dans le forum C
    Réponses: 7
    Dernier message: 26/04/2005, 14h51

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