Делать то, что вы хотите, как правило, представляет собой угрозу безопасности , но не обязательно так.
Вам обязательно нужно уведомить пользователя о потенциальном риске.
Существует более одной программы, использующей команды execfile() или compile() и exec для предоставления плагинов.
В этом нет ничего уродливого, вы просто должны знать, что вы делаете, когда и где.
И execfile(), eval() и оператор exec позволяют указать область, в которой будет выполняться/оцениваться ваш код.
myscope = {}
execfile("myfile.txt", myscope)
Это предотвратит смешение нового кода со старым. Все классы переменных, функции и модули из myfile.txt будут содержаться в словаре myscope.
Это, однако, не позволяет вредоносному коду удалять все файлы, которые могут быть с вашего диска, или что-то подобное.
Python 2 имеет хороший модуль под названием rexec, но из Python 2.2 он больше не работает.
В нем реализована инструкция execfile() exec и eval() в ограниченной среде. Хотя он не работает, он есть, и вы можете прорыть код, чтобы узнать, как это делается.
Итак, вы можете разрешить выполнение только защищенного кода (ну, как можно безопаснее) от внешнего источника.
Есть и другой способ. Вы можете загрузить файл, скомпилировать его код и затем проверить его, чтобы узнать, что он делает. Тогда скажите, да, я исполню это или нет, не буду. Это, однако, немного больше работы и много осложнений.
Но, я не думаю, что вам нужно будет пройти через все это. Расскажите подробнее о своей проблеме. Что именно вы имеете в виду под редакцией уровня? Я не думаю, что внешний код является для этого решением.
Добро пожаловать в переполнение стека! Кажется, вы просите кого-нибудь написать для вас какой-то код. Переполнение стека - это вопрос и ответ, а не служба написания кода. Пожалуйста, [см. Здесь] (http://stackoverflow.com/help/how-to-ask), чтобы узнать, как писать эффективные вопросы. –
Вы почти никогда не хотите этого делать, но если вы это сделаете, найдите exec. Ужасная вещь. * содрогания * – muddyfish
https://docs.python.org/2/library/functions.html#execfile – Rishav