I need to be able to run a large amount of python code from a string. Simply using exec doesn't seem to work, as, while the code runs perfectly in a normal setting, doing it this way seems to throw an error. I also don't think I can just import it as it it hosted on the internet. Here is the code:
import urllib.request URL = "https://dl.dropboxusercontent.com/u/127476718/instructions.txt" def main(): instructions = urllib.request.urlopen(URL) exec(instructions.read().decode()) if __name__ == "__main__": main() This is the error I've been getting:
Traceback (most recent call last): File "C:\Python33\rc.py", line 12, in <module> main() File "C:\Python33\rc.py", line 9, in main exec(instructions.read().decode()) File "<string>", line 144, in <module> File "<string>", line 120, in main NameError: global name 'Player' is not defined The code I'm trying to run is available in the link in the first code snippet.
If you have any questions I'll answer them. Thank you.
When opening HTTPS URLs, it does not attempt to validate the server certificate. Use at your own risk!In other words, man-in-the-middle attacks are possible, and this design would allow an attacker to execute arbitrary code on your system.