我有一个Python脚本,可以在与模块相同的目录中导入现有文件。如何写入文件,然后使用导入执行它与exec()
不同?它更安全吗?
这是一个例子来说明我在说什么:
import example
examplefile = open("example.py", "w")
exampletext = "def examplefunction():\n\tprint('This is an example!')\n\treturn"
examplefile.write(exampletext)
examplefile.close()
example.examplefunction()
答案 0 :(得分:3)
不,这比使用exec()
更安全。导入和exec()
都将文本编译为字节码,然后执行字节码。生成的字节码将完全相同。
唯一的区别是可以为磁盘上的文件创建.pyc
字节码缓存文件,而exec()
每次都会重新编译文本。如果你只生成一次文件,然后通过Python调用导入它,那么将文件写入磁盘将从该缓存中受益。