1

I am trying to get contents of the subfolder "github" in a given github repository. This does not seem to work.

repo = g.get_repo("PyGithub/PyGithub")
contents = repo.get_contents("github")
while len(contents) > 1:
    file_content = contents.pop(0)
    if file_content.type == "dir":
        contents.extend(repo.get_contents(file_content.path))
    else:
        print(file_content)

3 Answers3

1

The code snippet works just fine:

enter image description here

What errors are you getting?

karel
  • 5,489
  • 46
  • 45
  • 50
RobinKiplangat
  • 95
  • 1
  • 10
0

Small correction to the above answer. Use len(contents)>0, otherwise you will miss one file

from github import Github
g = Github()
repo = g.get_repo("PyGithub/PyGithub")
contents = repo.get_contents("github")
while len(contents)>0:
  file_content = contents.pop(0)
  if file_content.type=='dir':
    contents.extend(repo.get_contents(file_content.path))
  else :
    print(file_content)
Rinaz Belhaj
  • 745
  • 1
  • 7
  • 20
-1
from github import Github

access_token = "[access_tokey]"

hub = Github(access_token) # Github(user, pass)

# Displaying all the existing Repositories and files
for repo in hub.get_user().get_repos():
    # Displaying repo name
    print("Repository [{}]".format(repo.name))
    print("_" * 50)
    # Displaying Contents
    print("[Contents]")
    count = 1
    for content in repo.get_contents(""):
        print("{}. {} [{}]".format(count, content.path, content.type))
        if content.type == 'dir':
            new_count = 1
            # Displaying contents of sub-director
            for sub_content in repo.get_contents(content.path):
                print("    {}. {} [{}]".format(new_count, sub_content.path, sub_content.type))
                new_count += 1
                # Displaying contents of sub directory of sub directory
                if sub_content.type == 'dir':
                    another_count = 1
                    for datain in repo.get_contents(sub_content.path):
                        print("        {}. {} [{}]".format(another_count, datain.path, datain.type))
                        another_count += 1

        count += 1
    print("-" * 50)