如何将 python 脚本加载到内存中并像命令行一样执行它?

m0r*_*v4i 5 python python-2.x

我需要将第三方 python 脚本加载到内存中,然后像在命令行上一样执行它,类似于在 PowerShell 中调用iex(new-object net.webclient).downloadstring("http://<my ip>/myscript.ps1")它的方式。

例如,我希望将test.py放在 Web 服务器上,然后使用命令行开关在本地下载并在内存中执行它,例如:

load("http://<ip>/test.py")
exec("test.py -arg1 value -arg2 value")
Run Code Online (Sandbox Code Playgroud)

我很欣赏这很天真,但感谢任何帮助,谢谢!

jua*_*aga 4

这是利用-cPython 解释器选项的一种巧妙方法:

>>> import subprocess
>>> pycode = """
... import sys
... if sys.argv[1] == 'foo':
...     print('bar')
... else:
...     print('unrecognized arg')
... """
>>> result = subprocess.run(['python', '-c', pycode, 'bar'], stdout=subprocess.PIPE)
>>> print(result.stdout.decode())
unrecognized arg

>>> result = subprocess.run(['python', '-c', pycode, 'foo'], stdout=subprocess.PIPE)
>>> print(result.stdout.decode())
bar
Run Code Online (Sandbox Code Playgroud)

这可能会出现一些问题,例如某些平台限制您作为参数传递的内容的大小。我尝试使用stdinPython 解释器会接受的 来执行此操作,但它不会接受参数!