2016-07-27 5 views
0

Mit github3.py möchte ich den letzten Kommentar in der Liste der Kommentare abrufen, die mit einer Pull-Anforderung verknüpft sind, und dann nach einer Zeichenfolge suchen. Ich habe den folgenden Code ausprobiert, aber ich bekomme den Fehler TypeError: 'GitHubIterator' object does not support indexing (ohne Indexierung kann ich die Liste der Kommentare abrufen).TypeError: 'GitHubIterator' -Objekt unterstützt keine Indexierung

for comments in list(GitAuth.repo.issue(prs.number).comments()[-1]): 
    if sign_off_regex_search_string.search(comments.body) and comments.user.login == githubID: 
     sign_off_by_author_search_string_found = 'True' 
     break 

Antwort

1

Ich bin mir ziemlich sicher, dass die erste Zeile Ihres Codes nicht das tut, was Sie wollen. Sie versuchen, ein Objekt zu indexieren (mit [-1]), das Indexierung nicht unterstützt (es ist eine Art von Iterator). Sie haben auch einen Anruf mit der Liste umschlossen und eine Schleife, die auf dieser Liste läuft. Ich denke du brauchst die Schleife nicht. Versuchen:

comments = list(GitAuth.repo.issue(prs.number).comments())[-1] 

ich die schließenden Klammer aus dem list Anruf verschoben haben, bevor die Indizierung zu kommen. Dies bedeutet, dass die Indexierung auf der Liste statt auf dem Iterator erfolgt. Es verschwendet jedoch ein wenig Speicher, da alle Kommentare in einer Liste gespeichert werden, bevor wir die letzte indexieren und die Liste wegwerfen. Wenn die Speichernutzung ein Anliegen ist, können Sie die Schleife zurückbringen und loszuwerden der list Anruf:

for comments in GitAuth.repo.issue(prs.number).comments(): 
    pass # the purpose of this loop is to get the last `comments` value 

Der Rest des Codes nicht innerhalb dieser Schleife sein sollte. Die Schleifenvariable comments (die wahrscheinlich comment sein sollte, da sie auf ein einzelnes Element verweist) bleibt nach dem Ende der Schleife an den letzten Wert des Iterators gebunden. Darauf wollen Sie Ihre Suche machen.