Возможно, вам лучше использовать os.walk()
для этого.
os.listdir()
не отличает файлы от каталогов, и вы быстро столкнетесь с проблемами, пытаясь отсоединить их. Есть хороший пример использования os.walk()
для рекурсивного удаления каталога здесь и подсказок о том, как адаптировать его к вашим обстоятельствам.
Since you're floating both #inner-1
and #inner-2
, you'll need a clear fix. Basically, setting overflow: auto
on the parent (#wrapper
) should do the trick.
скомпилировать
его (получив объект кода) и построить на его основе новый объект функции. Намного менее просто (за исключением того, что ast.literal_eval
так же просто, как eval
для простейших случаев!), Но более безопасен и предпочтительнее в коде производственного качества.
Для многих задач я я видел, как люди (ab-) использовали exec
и eval
для мощных встроенных модулей Python, таких как getattr
и setattr
, индексация в глобальных объектов (),
и т. д. дает предпочтительные и на самом деле часто более простые решения. Для конкретных целей, таких как синтаксический анализ JSON, лучше подходят библиотечные модули, такие как json
(например, см. Комментарий SilentGhost к ответу в ушах на этот вопрос). И т. Д. И т. Д.
Я использую его как быстрый парсер JSON .. .
r='''
{
"glossary": {
"title": "example glossary"
}
}
'''
print eval(r)['glossary']['title']
В программе, которую я когда-то написал, у вас был входной файл, в котором вы могли указывать геометрические параметры как в виде значений, так и в виде выражений на языке Python для предыдущих значений, например:
a=10.0
b=5.0
c=math.log10(a/b)
Парсер python считывает это входной файл и получил окончательные данные, оценивая значения и выражения с помощью eval ().
Я не утверждаю, что это хорошее программирование, но мне не нужно было управлять ядерным реактором.
Статья Википедии о eval
довольно информативна и подробно описывает различные варианты использования.
Некоторые из предлагаемых вариантов использования:
Вы можете использовать его, чтобы позволить пользователям вводить свои собственные «скриптлеты»: небольшие выражения (или даже небольшие функции), которые можно использовать для настройки поведения комплексной системы.
В этом контексте, и если вам не нужно слишком заботиться о последствиях для безопасности (например, у вас есть образованная база пользователей), тогда eval () может быть хорошим выбором.
Раньше я использовал eval () для добавления интерфейса отладки в свое приложение. Я создал службу telnet, которая перенесла вас в среду работающего приложения. Входные данные обрабатывались через eval (), поэтому вы можете интерактивно запускать команды Python в приложении.
Eval - это способ взаимодействия с интерпретатором Python изнутри программы. Вы можете передавать литералы в eval, и он оценивает их как выражения Python.
Например -
print eval("__import__('os').getcwd()")
вернет текущий рабочий каталог.
Ура
eval ()
обычно не очень полезен. Одна из немногих вещей, для которых я ее использовал (ну, на самом деле это была exec ()
, но она очень похожа), - позволяла пользователю создавать сценарии для приложения, которое я написал на Python. Если бы он был написан на чем-то вроде C ++, мне бы пришлось встроить в приложение интерпретатор Python.
I use exec
to create a system of plugins in Python.
try: exec ("from " + plugin_name + " import Plugin") myplugin = Plugin(module_options, config=config) except ImportError, message: fatal ("No such module " + plugin_name + \ " (or no Plugin constructor) in my Python path: " + str(message)) except Exception: fatal ("Module " + plugin_name + " cannot be loaded: " + \ str(sys.exc_type) + ": " + str(sys.exc_value) + \ ".\n May be a missing or erroneous option?")
With a plugin like:
class Plugin: def __init__ (self): pass def query(self, arg): ...
You will be able to call it like:
result = myplugin.query("something")
I do not think you can have plugins in Python without exec
/eval
.