运行保存为变量的Python脚本

时间:2013-08-01 03:48:35

标签: python eval

是否可以运行已保存为变量的Python脚本?

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

我希望能够运行脚本而无需运行:

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

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分: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字符串中包含任何用户输入,请采取适当的警告。有人可以轻松输入将要执行的恶意语句。

另见:

答案 1 :(得分: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!"
     

Subprocess Docs

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