Форум сайта python.su
0
А не проще так?
lis = eval(open('a.txt','r').read())Офлайн
0
iBiZoNiX
eval = зло
Офлайн
0
EnchantnerПочему?
iBiZoNiX
eval = зло
Офлайн
0
iBiZoNiX
ну, в вашем примере вы как минимум читаете непойми что из файла и сразу исполняете. Достаточно вставить в файл строчку subprocess.Popen() и каюк.
Офлайн
0
>>> eval('subprocess.Popen(["rm", "-rf", "/"])')
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
eval('subprocess.Popen(["rm", "-rf", "/"])')
File "<string>", line 1, in <module>
NameError: name 'subprocess' is not definedОфлайн
0
bazooka
логично, потому что надо import subprocess. Это неважно, просто во внешний файл может попасть что угодно от кого угодно. eval - зло :)
Офлайн
857
да import subprocess может выше в самом скрипте быть
Enchantnerа сам скрипт - это внутренний файл ?
Это неважно, просто во внешний файл может попасть что угодно от кого угодно. eval - зло
Отредактировано (Авг. 22, 2011 02:14:42)
Офлайн
0
py.user.next
На скрипт можно выставить права. На внешний файл тоже, но если он динамически создается - с этим еще надо поковыряться. Не проще ли использовать стандартизированные форматы во избежание?
Офлайн
857
Enchantnerможно положить его в недоступный каталог
можно выставить права. На внешний файл тоже
Enchantnerно почему-то на python.org об этом не знают
eval - зло
Enchantnerдумаю, лучше использовать то, что для этого предназначено
Не проще ли использовать стандартизированные форматы во избежание?
Офлайн
0
py.user.nextЯ про это и говорю :) Но в 99% случаев лучше без него, чем с ним.
а eval всегда понимать, как исполнитель чего угодно
py.user.nextА что вы ждали? Надписи красными буквами “не использовать, брешь в безопасности”? Есть и те, кто goto юзает и не парится.
но почему-то на python.org об этом не знают
Офлайн