Найти - Пользователи
Полная версия: Подгрузить другой скрипт с сервера и выполнить внутри
Начало » Python для новичков » Подгрузить другой скрипт с сервера и выполнить внутри
1 2 3 4 5 6 7
BossBox
Здравствуйте, можно ли как внутри scripts.pyc подгрузить другой скрипт с сайта old.pyc и сразу его выполнить?
alexsis
Можно поподробней.
BossBox
alexsis
Можно поподробней.

У нас есть скрипт scripts.pyc, нужно чтобы при выполнении его он соединился с сервером и загрузил от туда еще один скрипт old.pyc, и сразу его выполнил
Shaman
Можно, если scripts.py у вас тоже есть.
BossBox
Shaman
Можно, если scripts.py у вас тоже есть.

Все есть, загвоздка в том что как выполнить old.pyc после загрузки и через что лучше его загрузить и выполнить..
JOHN_16
BossBox
находясь на форуме Python задавать такие вопросы =) скачать через http библиотеки, например
import urllib
urllib.URLopener().retrieve('http://yastatic.net/morda-logo/i/citylogos/jazz2014-logo-ru.png', 'logo.png')

За исполнение отвечает модуль subprocess
BossBox
import urllib, subprocess
data = urllib.URLopener().retrieve('http://yastatic.net/morda-logo/i/citylogos/jazz2014-logo-ru.png', 'logo.png')
subprocess.call(data)

Правильно?
sanodin
Скачать надо скрипт на локальный комп и выполнить , либо считать скрипт как строку и выполнить код через exec
как вам показали выше, этим вы скачиваете скрипт на ваш комп и уже потом его должны выполнить
типа
import urllib
import os
urllib.URLopener().retrieve('http://yastatic.net/morda-logo/i/citylogos/jazz2014-logo-ru.png', 'logo.png')
os.startfile('logo.png')
os.system('logo.png')
#################
import subprocess
proc = subprocess.Popen("1.py" , shell=True, stdout=subprocess.PIPE)
out = proc.stdout.readlines()
но если .pyc то не считает код и exec не пройдет, так что скачиваем и выполняем как выше показано
f = open('1.py','r').read()
print f
cod = compile(f, '<string>', 'exec')
exec cod
BossBox
Попробую, потом отпишусь.
py.user.next
чтобы выполнить скрипт, достаточно его импортировать

t1.py
#!/usr/bin/env python3
 
def f():
    print('test')
 
f()

открываем python3 и импортируем t1, создаётся t1.pyc
t1.py переименовываем (чтобы он не был обнаружен), оставляем t1.pyc

t2.py
#!/usr/bin/env python3
 
import os
import importlib
 
def main():
    fname = 't1.pyc'
    mname = os.path.splitext(fname)[0]
    m = importlib.__import__(mname)
    print(m)
 
if __name__ == '__main__':
    main()

запускаем t2.py и получаем вывод
[guest@localhost t]$ ./t2.py 
test
<module 't1' from '/home/guest/tmp/tests/py/t/t1.pyc'>
[guest@localhost t]$
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB