Seite 1 von 1
Re.search
Verfasst: Freitag 7. August 2015, 19:17
von nooby
Hallo Leute
Ich hab mal wieder ne Frage..
Re.search.__globals__ was listet das alles auf?
Und wie funktioniert dieser Aufruf?
search.__globals__['sys'].modules['os'].system('cat')
Hoffe das war verständlich genug..

Re: Re.search
Verfasst: Freitag 7. August 2015, 21:13
von BlackJack
@nooby: Das kannst Du doch ganz einfach selber herausfinden in einer Python-Shell. Einfach mal die Teilausdrücke ausprobieren und `type()` und `help()` auf die Zwischenergebnisse anwenden.
Re: Re.search
Verfasst: Freitag 7. August 2015, 21:27
von nooby
Das habe ich bereits getan...
Leider bin ich wohl zu doof das ganze zu interpretieren :/
Die ganze Auflistung die man erhält, sind das einfach alle Ausdrücke, die Python kennt, ohne etwas zu importieren?

Re: Re.search
Verfasst: Freitag 7. August 2015, 21:47
von BlackJack
@nooby: Nein wohl kaum, dafür würde eindeutig zu viel fehlen. Schau dir doch mal an was Du da bekommst. Also was für einen Datentyp. Und dann den Inhalt. Woher kommt Dir der bekannt vor? Falls der Dir gar nicht bekannt vorkommt, fang doch einfach mal an die Dokumentation zu lesen. Sinnvollerweise startest Du bei dem Modul das Du da verwendest.
Edit: Die `dir()`- und die `vars()`-Funktion könnte beim untersuchen der beteiligten Objekte auch interessant sein.
Re: Re.search
Verfasst: Freitag 7. August 2015, 22:05
von nooby
Jetzt ist mir das ganze klar^^
Jedoch frage ich mich wieso der Code dann nicht einfach re.sys heisst...
Hat es einen Sinn das ganze über __globals__ zu machen?
Re: Re.search
Verfasst: Freitag 7. August 2015, 22:12
von BlackJack
@nooby: Der direkte weg wäre ``import sys; sys.system('cat')``. Wo hast Du den Code denn her? Daraus sollte sich der Sinn eigentlich ergeben.
Re: Re.search
Verfasst: Freitag 7. August 2015, 22:14
von nooby
Es geht darum aus einem Python Programm, das nur bestimmte Befehle zulässt eine Datei zu lesen.
Daher der Code.
Re: Re.search
Verfasst: Samstag 8. August 2015, 00:48
von BlackJack
@nooby: Da dann weisst Du doch warum nicht einfach `re.sys`. Das wird dann wohl nicht zulässig sein.
Re: Re.search
Verfasst: Samstag 8. August 2015, 09:59
von Sirius3
@nooby: das soll demonstrieren, dass man keinen Code aus nicht vertrauenswürdigen Quellen einfach so mit exec ausführen darf, auch wenn, z.B. nur die search-Methode direkt zugreifbar ist, weil man eben über die Attribute dieser Methode an alle Funktionen herankommt, auch an os.system.