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 chevronné
    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
    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 éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    Bonjour,

    Sauf si j'ai mal compris la doc, ça ne serait pas directory_contents ?

  3. #3
    Membre chevronné
    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
    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 éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    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

  5. #5
    Membre chevronné
    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
    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 éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    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'))

  7. #7
    Membre chevronné
    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
    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 éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    désolé, j'ai édité entre temps mon code : directory_contents renvoyant une liste

  9. #9
    Membre chevronné
    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
    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 chevronné
    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
    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 éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    tes fichiers ont bien du contenu ?
    que renvoie size ?

  12. #12
    Membre chevronné
    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
    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 éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    Citation Envoyé par bonjourajax Voir le message
    que faire?
    size est un attribut de la classe Contents (relis la doc)
    Donc

  14. #14
    Membre chevronné
    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
    Par défaut
    Bonjour

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

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    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

  16. #16
    Membre chevronné
    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
    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 chevronné
    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
    Par défaut
    Personne?

  18. #18
    Membre chevronné
    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
    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
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    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 chevronné
    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
    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