Re.search

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
nooby
User
Beiträge: 91
Registriert: Montag 12. März 2012, 20:39
Wohnort: 127.0.0.1

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.. :oops:
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.
nooby
User
Beiträge: 91
Registriert: Montag 12. März 2012, 20:39
Wohnort: 127.0.0.1

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? :roll:
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.
nooby
User
Beiträge: 91
Registriert: Montag 12. März 2012, 20:39
Wohnort: 127.0.0.1

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?
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.
nooby
User
Beiträge: 91
Registriert: Montag 12. März 2012, 20:39
Wohnort: 127.0.0.1

Es geht darum aus einem Python Programm, das nur bestimmte Befehle zulässt eine Datei zu lesen.
Daher der Code.
BlackJack

@nooby: Da dann weisst Du doch warum nicht einfach `re.sys`. Das wird dann wohl nicht zulässig sein.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@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.
Antworten