嗯,我想在运行时输入一个python函数作为输入,并执行代码'n'的部分。例如,使用tkinter我创建一个文本框,用户编写函数并提交它,同时提到它要执行多少次。我的程序应该能够像用户所提到的那样多次运行该功能。如何在运行时输入python代码并执行它?
Ps:我想到了一种替代方法,用户可以在程序中编写程序,然后我可以在python程序中将它作为python文件名作为系统cmd执行,但我不想那样。
嗯,我想在运行时输入一个python函数作为输入,并执行代码'n'的部分。例如,使用tkinter我创建一个文本框,用户编写函数并提交它,同时提到它要执行多少次。我的程序应该能够像用户所提到的那样多次运行该功能。如何在运行时输入python代码并执行它?
Ps:我想到了一种替代方法,用户可以在程序中编写程序,然后我可以在python程序中将它作为python文件名作为系统cmd执行,但我不想那样。
这就是execfile()
的用途。
http://docs.python.org/library/functions.html#execfile
创建一个临时文件。
将文本框的内容写入文件。
关闭。
Execfile。
完成后删除。
好的性能也是一个约束在这里,会创建和删除一个临时文件增加执行时间? – Rahul 2010-10-20 19:10:15
是的。在显微镜下。尝试测量它。 – 2010-10-20 19:19:10
IPython会吗?
Python提供的方法可以做到这一点使用函数调用次数: - 的eval() - EXEC()
为了你的需求,你应该阅读有关高管。
只需要非常小心安全 - 你基本上允许任何有权访问该输入的用户执行任意代码作为执行python的用户程序。如果它只是一个单一的用户环境,应该没问题,但是如果程序的任何部分需要管理权限/ root权限,或者如果该输入发送到其他地方执行的服务器,那么您只是在寻求麻烦。 – user470379 2010-10-20 19:13:24
基本上,输入功能将在集群网络上运行。但现在我只限于单一系统,因为我正在构建一个小型原型。但是你正在考虑哪种安全问题呢? – Rahul 2010-10-20 19:21:20
让某人能够在'exec'中运行,使他们在机器上拥有非常完整的能力。如果有人跑这段代码,你会感觉如何:'import os,os.path for root,dirs,os.walk('。')中的文件: f中的文件: fullpath = os.path.join(root ,f) os.remove(fullpath) ' – hughdbrown 2010-10-20 19:30:36
此解决方案可能适合您。只需在some_dict中使用exex input()创建一个用户定义函数的字典。 http://stackoverflow.com/a/6098736/2368836 – rocktheartsm4l 2014-08-16 23:52:51