mkallas hat geschrieben:Nicht die Exceptions sind das Problem, sondern daß bei input jeglicher valider Python-Code
ausgeführt wird.
ist noch ein eher harmloses Beispiel.
Okay, liest man hier ja alle Nase lang, dürfte wohl auch richtig so sein.
Um mir es selbst zu beweisen, habe ich mal ein noch "harmloseres" Beispiel gewählt, das nur dafür sorgen soll, dass das Programm sich selbst bzw. die Datei mit dem Code löscht.
Mein Versuch sieht so aus:
Eingegeben habe ich
Code: Alles auswählen
import os,sys; os.remove(os.path.abspath(sys.argv[0]))
Ergebnis:
Code: Alles auswählen
Traceback (most recent call last):
File "../killit.py", line 1, in <module>
x = input("Gib etwas ein: ")
File "<string>", line 1
import os,sys; os.remove(os.path.abspath(sys.argv[0]))
^
SyntaxError: invalid syntax
Die Code-Zeile an sich ist in Ordnung, habe ich mit einem anderen Programm gestestet (bevor es sich dann selbst gelöscht hat ...).
Vermutliche Erklärung: import ist ein statement, eval() wertet aber nur expressions aus. Richtig?
Bestimmt gibt es aber auch hierfür einen workaround