Форум сайта python.su
857
Сделал для третьего питона (для будущих поколений)
t2.py
#!/usr/bin/env python3 import marshal import urllib.request def decode(data): return marshal.loads(data[12:]) def main(): fname = 't1.pyc' url = 'http://localhost/{}'.format(fname) with urllib.request.urlopen(url) as data: code = decode(data.read()) exec(code, globals()) if __name__ == '__main__': main()
#!/usr/bin/env python3 import os def f(): print('test', os.getcwd()) f()
[guest@localhost v3]$ ./t2.py
test /home/guest/tmp/tests/py/t/v3
[guest@localhost v3]$
In all cases, if the optional parts are omitted, the code is executed in the current scope.
Отредактировано py.user.next (Май 1, 2014 22:38:02)
Офлайн
33
А sandbox нынче не можно использовать или я отстал от жизни? 
Офлайн
31
LexanderМожно, но устанавливать надо дополнительно, плюс под Windows еще надо собрать
А sandbox нынче не можно использовать или я отстал от жизни?
Офлайн
0
А вот мы загрузили наш файл и выполнили, вопрос:
1. Он загружается один раз? (то есть загрузился выполнился и все будет выполнять постоянно когда потребуется, или будет загружать каждый раз при вызове)
2. Остановить его выполнение можно как? (нашего загружено скрипта)
Офлайн
31
1. загружаться будет каждый раз, ваше условие(не сохранять файл)
2. остановить можно, по условию
Отредактировано sanodin (Май 2, 2014 14:08:26)
Офлайн
0
Нет вы наверно не поняли, запустился наш скрипт он обратился к серверу и вызвал от туда скрипт (выполнил), команды для повторного то вызова нет, только при вызове нашего скрипта на машине повторно, он наверно загрузит, или я ошибаюсь?
Офлайн
31
все верно, вы запускаете программу, она обращается к серверу, считывает\подгружает код, выполняет его и….либо работает дальше по, одному вам ведомому, заданию и в процессе снова выполняет загруженный с сервера код в любое время без его повторной закачки либо заканчивает свою работу
Отредактировано sanodin (Май 2, 2014 16:07:06)
Офлайн
0
Спасибо всем, очень помогло, выручили!
Офлайн
0
Вопрос, если скрипт вызывается из C:\\Home\Dir, при выполнении:
urllib.URLopener().retrieve('http://185.20.000.000/', 'server.pyc')
Отредактировано BossBox (Май 3, 2014 12:04:42)
Офлайн
31
Да конечно, только вы же не собирались его сохранять
urllib.URLopener().retrieve('http://185.20.000.000/', 'C:\Home\Dir\mods\script\server.pyc')
Отредактировано sanodin (Май 3, 2014 13:25:03)
Офлайн