Einfache Schleife über Dictionary funktioniert nicht!

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
richx
User
Beiträge: 2
Registriert: Montag 27. April 2009, 14:31

Hallo!

Ich benutze Trac- ein hervorrangendes Tool zur gemeinschaftlichen Entwicklung - und sog. Subversion Commit Hooks. Das sind Skripte die ausgeführt werden, nachdem ein Subversion commit ausgeführt wird - in diesem Fall um automatisch Kommentare in die im Commit-Comment erwähnten Tickets zu schreiben.

Das Skript welches ich benutze gibts hier:
http://trac.edgewall.org/browser/trunk/ ... ommit-hook

Das Script sucht per Regexp nach einem Kommando, z.b. "fix" und schliesst dann das entsprechende Ticket. Ich möchte nun, dass für sämmtliche Tickets die erwähnung finden, das Kommando "_cmdRefs" ausgeführt wird!

Dazu habe ich folgende For-Schleife eingebaut, nach tickets = {}

Code: Alles auswählen

        for tkt_id in ticket_re.findall(self.msg):
            tickets.setdefault(tkt_id,[]).append('_CmdRefs')
Das sollte meiner Meinung nach die Tickets finden, und einfach zur Liste hinzufügen. Geht allerdings nicht. Geht gar nix mehr. Was mache ich falsch?

Vielen Dank!

Gruß!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hallo richx, willkommen im Forum,

Ist ja klar dass das nicht funktioniert, denn du übergibst ja dort einen String und im Ursprungscode (``tickets.setdefault(tkt_id, []).append(func)``) ist ``func`` ein Funktionsobjekt. Also musst du zumindest mal statt dem String ein Funktionsobjekt hernehmen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
richx
User
Beiträge: 2
Registriert: Montag 27. April 2009, 14:31

Ahh, super, danke für die Antwort! Abgeändert funktioniert es:

Code: Alles auswählen

        for tkt_id in ticket_re.findall(self.msg):
            func = getattr(self, '_cmdRefs')
            tickets.setdefault(tkt_id,[]).append(func)
Danke nochmal!!

Richx
Antworten