2010-10-20 248 views
0

嗯,我想在运行时输入一个python函数作为输入,并执行代码'n'的部分。例如,使用tkinter我创建一个文本框,用户编写函数并提交它,同时提到它要执行多少次。我的程序应该能够像用户所提到的那样多次运行该功能。如何在运行时输入python代码并执行它?

Ps:我想到了一种替代方法,用户可以在程序中编写程序,然后我可以在python程序中将它作为python文件名作为系统cmd执行,但我不想那样。

+0

此解决方案可能适合您。只需在some_dict中使用exex input()创建一个用户定义函数的字典。 http://stackoverflow.com/a/6098736/2368836 – rocktheartsm4l 2014-08-16 23:52:51

回答

1

这就是execfile()的用途。

http://docs.python.org/library/functions.html#execfile

  1. 创建一个临时文件。

  2. 将文本框的内容写入文件。

  3. 关闭。

  4. Execfile。

  5. 完成后删除。

+0

好的性能也是一个约束在这里,会创建和删除一个临时文件增加执行时间? – Rahul 2010-10-20 19:10:15

+0

是的。在显微镜下。尝试测量它。 – 2010-10-20 19:19:10

1

Python提供的方法可以做到这一点使用函数调用次数: - 的eval() - EXEC()

为了你的需求,你应该阅读有关高管。

+0

只需要非常小心安全 - 你基本上允许任何有权访问该输入的用户执行任意代码作为执行python的用户程序。如果它只是一个单一的用户环境,应该没问题,但是如果程序的任何部分需要管理权限/ root权限,或者如果该输入发送到其他地方执行的服务器,那么您只是在寻求麻烦。 – user470379 2010-10-20 19:13:24

+0

基本上,输入功能将在集群网络上运行。但现在我只限于单一系统,因为我正在构建一个小型原型。但是你正在考虑哪种安全问题呢? – Rahul 2010-10-20 19:21:20

+1

让某人能够在'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