1

Is it possible to run a Python script which has been saved as a variable?

x = 'print ("Hello, World!")'
??? run(x) ???

I would like to be able to run the script without having to run:

python -c 'print ("Hello, World!")'

Any help will be appreciated.

4

2 回答 2

1

我相信该exec声明是您正在寻找的。

>>> cmd = 'print "Hello, world!"'
>>> exec cmd
Hello, world!
>>>
>>> cmd = """
... x = 4
... y = 3
... z = x*y + 1
... print 'z = {0}'.format(z)
... """
>>>
>>> exec cmd
z = 13

如果您在要访问的字符串中包含任何用户输入,请采取适当的谨慎措施exec。有人可以很容易地输入将被执行的恶意语句。

也可以看看:

于 2013-08-01T03:50:17.200 回答
0

根据您想要做什么,拥有另一个文件并使用 Subprocess.Popen 打开它可能会有所帮助。一个示例是异步进程、后端数据库或另一个应用程序实例,以允许在多个进程之间使用干净的 API :)。

从子流程文档:

">>> import shlex, subprocess
>>> command_line = raw_input()
/bin/vikings -input eggs.txt -output "spam spam.txt" -cmd "echo '$MONEY'"
>>> args = shlex.split(command_line)
>>> print args
['/bin/vikings', '-input', 'eggs.txt', '-output', 'spam spam.txt', '-cmd', "echo '$MONEY'"]
>>> p = subprocess.Popen(args) # Success!"

子流程文档

此外,您可以使用eval(expression[, globals[, locals]])它提供了一种更直观的方式来为要运行的字符串提供符号表(技术上可以是命名空间字典):)。

于 2013-08-01T04:06:03.730 回答