从另一个脚本导入python脚本时,我想要受到经典保护的脚本代码
if __name__ == "__main__":
....
....
Run Code Online (Sandbox Code Playgroud)
要运行,我怎样才能运行该代码?
我想要做的是从一个python脚本,动态更改一个模块,然后导入一个现有的脚本,应该看到所做的更改并运行它的__main__代码,就像它是由python直接调用的?
我需要在与第一个python脚本相同的命名空间中执行第二个python脚本,并传递第二个脚本命令行参数.下面建议的execfile()可能有效,但不带任何命令行参数.
我宁愿不编辑第二个脚本(外部代码),因为我希望第一个脚本成为它的包装器.
如果您可以编辑正在导入的文件,一个选项是遵循将重要代码放入函数内部的基本原则.
# Your script.
import foo
foo.main()
# The file being imported.
def main():
print "running foo.main()"
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
如果你不能编辑正在导入的代码,execfile它确实提供了一个将参数传递给导入代码的机制,但这种方法会让我感到紧张.谨慎使用.
# Your script.
import sys
import foo
bar = 999
sys.argv = ['blah', 'fubb']
execfile( 'foo.py', globals() )
# The file being exec'd.
if __name__ == "__main__":
print bar
print sys.argv
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1006 次 |
| 最近记录: |