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

Bibliothèques tierces Python Discussion :

[github] tree hash


Sujet :

Bibliothèques tierces Python

  1. #1
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut [github] tree hash
    Bonjour,

    J'essaye de récuperer les fichiers d'un compte de test sur github (avec l'api github v3)

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    nom = 'nom'
    passe = 'pass'
    nomRepository = 'nomRepository'
    nomDeBranche = 'nomDeBranche'
    
    githubLog = login(username=nom, password=passe)
    repository = githubLog.repository(nom, nomRepository)
    
    # je sais pas pourquoi mais ca marche comme ça (.tree au lieu de .branch)
    tree = repository.tree(nomDeBranche)
    
    print(tree.tree)
    print(tree.tree[0].path)
    # print(tree.tree[0].tree  ->  cet objet n'a pas l'attribut tree



    Dans ma branche j'ai 2 dossiers qui contiennent chacun quelques fichiers

    print(tree.tree) me renvoie le nom des dossiers en <hash>
    print(tree.tree[0].path) me renvoie le nom du dossier


    J'essaye dans un premier temps d'avoir au moins le nom du fichier (histoire de comprendre la structure)
    j'aimerais récupérer les fichiers a l'intérieur apres avoir relu 36 fois la doc je trouve pas
    Si vous avez une idée...

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    Bonjour,

    Sauf si j'ai mal compris la doc, ça ne serait pas directory_contents ?
    Le savoir est une arme alors soyons armés

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    Malheureusement ce n 'est pas ca

    File "/usr/local/lib/python3.6/dist-packages/github3.py-1.1.0-py3.6.egg/github3/models.py", line 58, in __getattr__
    AttributeError: directory_contents
    edit : (j'avais mal lu )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print(repository.directory_contents('dossier'))
    [('.gitignore', <Contents [dossier/.gitignore]>), ('fichier2', <Contents [dossier/fichier2]>)]
    Et comment je fais pour lire ça on dirait un json mais même pas
    Est-ce possible de transformer les < et > en quote et les parentheses en accolade puis de lire le json

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    donc tu as bien le nom des fichiers + une instance de la class Contents
    Si tu veux le contenu des fichiers, il suffit d'utiliser (à priori) les méthodes de cette classe
    Le savoir est une arme alors soyons armés

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    Merci de suivre mon post

    J'ai utilisé file_contents(chemincomplet)

    Et ca m'a renvoyé

    <Contents [dossier/fichier2]>
    Je regarde si je trouve quelque chose je te tiens au courant

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    cette fonction retourne également une instance de la classe Contents
    pourquoi ne pas l'utiliser ?
    Voici un exemple (non testé, basé uniquement sur la doc) avec la méthode directory_contents

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (path, content) in repository.directory_contents('dossier'):
       print (content.content)
       print (content.decoded.decode('utf-8'))
    Le savoir est une arme alors soyons armés

  7. #7
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    J'ai essayé votre exemple ainsi que des dérivés (ou avec file_get_contents)mais aucun résultat convenable

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        path, content = repository.directory_contents('dossier')
        print(path)
        print(content)
        print (content.content)
        print (content.decoded.decode('utf-8'))

    Voila ce que cela retourne
    print (path):
    ('.gitignore', <Contents [dossier/.gitignore]>)

    print (content) donne:
    ('fichier2', <Contents [dossier/fichier2]>)

    print(content.content):
    AttributeError: 'tuple' object has no attribute 'content'
    AttributeError: 'tuple' object has no attribute 'decoded'

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    désolé, j'ai édité entre temps mon code : directory_contents renvoyant une liste
    Le savoir est une arme alors soyons armés

  9. #9
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    c'est pas grave tu essayes de résoudre le probleme


    print(path)
    .gtignore
    fichier

    print(content)
    <Contents [dossier/.gitignore]>
    <Contents [dossier/fichier]>

    print(content.content)
    None
    None

    print (content.decoded.decode('utf-8'))
    AttributeError: 'NoneType' object has no attribute 'decode'

  10. #10
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    Ce serait bien qu'il y ait un sommaire plus détaillé dans leur doc
    Et une methode get_all_directory

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    tes fichiers ont bien du contenu ?
    que renvoie size ?
    Le savoir est une arme alors soyons armés

  12. #12
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    Oui voila le resultat
    print(size(content.content))
    NameError: name 'size' is not defined
    print(len(content.content))
    TypeError: object of type 'Contents' has no len()
    que faire?

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    Citation Envoyé par bonjourajax Voir le message
    que faire?
    size est un attribut de la classe Contents (relis la doc)
    Donc
    Le savoir est une arme alors soyons armés

  14. #14
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    Bonjour

    AttributeError: 'list' object has no attribute 'size'

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    Bonjour
    Pourquoi as t'on tout d'un coup une liste et non plus un objet Contents?
    Merci de mettre le code posant problème
    Le savoir est une arme alors soyons armés

  16. #16
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    Bonjour

    (oups j'avais testé des truc entre temps...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for (path, content) in repository.directory_contents('dossier'):
            print (content.size) # bytes
            print (content.content)
    0 (le premier fichier est bien vide)
    None
    92
    None

  17. #17
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    Personne?

  18. #18
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut [github]directory_contents retourne None
    Bonjour

    Comment je peux récupéré ce qu'il y a à l'intérieur des fichiers d'un dossier?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    nom = 'nom'
    passe = 'pass'
    nomRepository = 'nomRepository'
    nomDeBranche = 'nomDeBranche'
     
    githubLog = login(username=nom, password=passe)
    repository = githubLog.repository(nom, nomRepository)
     
    for (path, content) in repository.directory_contents('dossier'):
            print (content.size) # bytes
            print (content.content)
    Voici ce qui est retourné:

    content.size => 92
    content.content => None
    j'ai suivi la doc officielle
    (merci de ne pas déplacer le sujet vers librairies tierces car personne ne regarde la bas)

  19. #19
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par bonjourajax Voir le message
    (merci de ne pas déplacer le sujet vers librairies tierces car personne ne regarde la bas)
    A vous savez on ne fait que partager l'expérience qu'on a sur telle ou telle bibliothèque...
    Donc si ceux qui ont utilisé github sont rares et en vacances, il faut patienter.

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

  20. #20
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    Je comprends bien mais mon sujet commençait à se perdre
    Le probleme avec cette bibliotheque est qu'elle a été mise a jour régulierement d'apres ce que j'ai pu voir et la plupart des fonctionnalités ont changé de nom entre les différentes versions
    Il n'y aurait pas un moyen avec du python "pur" de coder des fonctionnalités pour l'api github?

    - B

Discussions similaires

  1. Tiger Tree Hash
    Par champy dans le forum Général Java
    Réponses: 2
    Dernier message: 21/12/2007, 13h03
  2. Tables de hash
    Par miss8 dans le forum C
    Réponses: 2
    Dernier message: 16/11/2002, 17h44
  3. pb formatage document XML généré par un dom tree
    Par lionel69 dans le forum APIs
    Réponses: 11
    Dernier message: 17/10/2002, 09h53
  4. BTREE & B+TREE
    Par TuxP dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 09/08/2002, 17h27
  5. Recherche algo tree
    Par Anonymous dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 24/05/2002, 13h44

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