Habe einen .pyc file mit read() reingelesen und erhalte bei Ausführung mit eval folgende Fehlermeldung
TypeError: source code string cannot contain null bytes
Dann wollte ich es anders versuchen und habe Python Code mit compile compiliert und wollte ihn dann mit write() in einen File schreiben.
Da bekomme ich aber dann diese Fehlermeldung:
TypeError: 'code' does not support the buffer interface
Gibt es einen Write und Read Befehl für Bytecode?
-
- User
- Beiträge: 1715
- Registriert: Freitag 31. Juli 2015, 13:34
Hab die Lösung selber gefunden. Wenn man compilierten Code mit marshal.dump in ein File schreibt, kann man ihn mit marshal.load wieder laden und dann mit eval ausführen.
Das mit den pyc Files allerdings funktioniert nicht.
Das mit den pyc Files allerdings funktioniert nicht.
Es gibt quasi keine Garantie für was in einer pyc Datei drin ist. Du kannst dich nicht darauf verlassen dass eine pyc Datei mit unterschiedlichen Interpretern oder unterschiedlichen Versionen eines Interpreters funktioniert. PyPy hat z.B. Bytecode Operationen die CPython nicht hat.
Was auch immer du mit pyc Dateien veranstaltest, du solltest es sein lassen es sei den du betreibst Bebugging oder du willst nur Spielereien machen.
Was auch immer du mit pyc Dateien veranstaltest, du solltest es sein lassen es sei den du betreibst Bebugging oder du willst nur Spielereien machen.
Und Python-Bytecode zur Obfuskation zu nutzen ist auch sinnlos, da mehrere Decompiler existieren.
the more they change the more they stay the same
-
- User
- Beiträge: 1715
- Registriert: Freitag 31. Juli 2015, 13:34
Deine Etikettierungen, Vorurteile und Bemerkungen über Rumgetrolle kannst Du Dir sparen. Es handelte sich um eine ernsthafte Überlegung, ob man dynamisch geladene Anwendungen, also das was man normalerweise tut mit:sparrow hat geschrieben:Überhaupt ist das ganze Vorgehen - mit Verlaub - Schwachsinn.
Ich glaube ja inzwischen, dass das nur Rumgetrolle ist.
Code: Alles auswählen
python myprogram.py
-
- User
- Beiträge: 1715
- Registriert: Freitag 31. Juli 2015, 13:34
Bevor man etwas implementiert, sollte man sich vorher überlegen ob es geht und ob man es braucht. Wenn man es implementiert hat und es gibt dann Probleme und man dann feststellt, dass man es eigentlich gar nicht braucht, dann hat man Zeit vergeudet. Also sollte man voher wissen, was man implementieren will und was nicht.jens hat geschrieben:@Alfons Mittelmeyer: Du steckst viel zu viel Energie in Vorüberlegungen!
Mach erstmal und kümmere dich um Probleme, wenn sie wirklich auftreten.
@Alfons Mittelmeyer: nicht was man implementieren will, sondern man sollte überlegen, was das Ziel ist, und wie man es erreichen könnte. Dazu schaut man sich an, ob man das Ziel über Standardmittel erreichen kann und ja man kann Code ausführen, in dem man ihn imporiert. Ansonsten verweise ich Dich nochmal auf YAGNI.