Statt mit eval und compile zu arbeiten, könnte man ja Eingaben auch in Files schreiben und die dann importieren.
Aber beim import muss man dann den Filenamen direkt angeben und eine Variable hilft da nichts.
Kann mir da vielleicht jemand weiterhelfen? Mein Code sieht so aus, aber das mit "filename" funktioniert dann nicht:
Code: Alles auswählen
import threading
class MyThread(threading.Thread):
def run(self):
counter=0
while True:
a = input("> ")
filename="temp"+str(counter)
fi=open(filename+'.py','w')
fi.write(a)
fi.close()
try: import filename
except: print("Error:",a)
counter +=1
mythread = MyThread()
mythread.daemon = True
mythread.start()
Code: Alles auswählen
import threading
class MyThread(threading.Thread):
def run(self):
counter=0
while True:
a = input("> ")
filename="temp"+str(counter)
fi=open(filename+'.py','w')
fi.write(a)
fi.close()
filename2="imptemp"+str(counter)
fi=open(filename2+'.py','w')
fi.write("import "+filename)
fi.close()
try: import filename2
except: print("Error:",a)
counter +=1
mythread = MyThread()
mythread.daemon = True
mythread.start()