2017-05-09 24 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

相關問題