我需要将第三方python脚本加载到内存中,然后像在命令行上一样执行它,类似于在PowerShell中可以执行iex(new-object net.webclient).downloadstring("http://<my ip>/myscript.ps1")
然后调用它的方式。
例如,我想将我的 test.py 放在网络服务器上,然后使用命令行开关在本地下载并在内存中执行它,例如:
load("http://<ip>/test.py")
exec("test.py -arg1 value -arg2 value")
我很欣赏这很幼稚,但是对您的帮助也非常感谢,谢谢!
答案 0 :(得分:3)
我建议您使用请求下载脚本,然后使用exec执行。
类似的东西:
import requests
url="https://gist.githubusercontent.com/mosbth/b274bd08aab0ed0f9521/raw/52ed0bf390384f7253a37c88c1caf55886b83902/hello.py"
r=requests.get(url)
script=r.text
exec(script)
来源:
Why is Python's eval() rejecting this multiline string, and how can I fix it?
https://www.programiz.com/python-programming/methods/built-in/exec
http://docs.python-requests.org/en/master/
如果要为下载的脚本指定参数,可以执行以下操作:
import requests
import sys
sys.argv = ['arg1', 'arg2']
url="https://gist.githubusercontent.com/itzwam/90cda6e05d918034e75c651448e6469e/raw/0bb293fba68b692b0a3d2b61274f5a075a13f06d/blahblah.py"
script=requests.get(url).text
exec(script)
要点:
import sys
class Example(object):
def run(self):
for arg in sys.argv:
print arg
if __name__ == '__main__':
Example().run()
来源: