2017-05-09 56 views
1

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

不应该在'import example'这行之后创建文件? –

+0

不,因为文件'example.py'已经存在。 – PythonFanatic

+0

@PythonFanatic:此时新文件内容不会被加载;该模块已经*已经被加载到内存中,并且不会再被加载。 –

回答

3

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

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

+0

啊,我明白了。感谢您的简要解释。 – PythonFanatic