Python 将代码写入文件,然后执行它

Python 将代码写入文件,然后执行它,python,python-3.x,Python,Python 3.x,我有一个Python脚本,它将现有文件导入到模块所在的同一目录中。写入文件,然后使用导入执行它与exec()有何不同?安全吗? 下面是一个例子来说明我所说的: import example examplefile = open("example.py", "w") exampletext = "def examplefunction():\n\tprint('This is an example!')\n\treturn" examplefile.write(exampletext) examp

我有一个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()

不,它并不比使用
exec()
更安全。导入和
exec()
都将文本编译成字节码,然后执行字节码。生成的字节码将完全相同


唯一的区别是可以为磁盘上的文件创建
.pyc
字节码缓存文件,而
exec()
每次都会重新编译文本。如果只生成一次文件,然后跨Python调用导入它,那么将文件写入磁盘将受益于该缓存。

啊,我明白了。感谢您的简明解释。
import-example
行不应该在创建文件后继续吗?不,因为文件
example.py
已经存在。@PythonFanatic:此时将不会加载新文件内容;模块已经加载到内存中,不会再加载。它是这样工作的吗?当我在自己的代码中添加类似的内容时,更新的内容加载得很好。嗯。你可以试试看:把打印语句放入初始文件,以及导入和修改文件之前和之后,还可以在文件中写入打印语句。然后查看打印的行以及顺序。