![](/img/trans.png)
[英]Sequence of object cleanup and functions called by atexit in Python module
[英]Alternative to python atexit module that works when called from other scripts
在您的python脚本退出时,使用atexit.register(function)
注册要调用的函数是一种常见的做法。
问题是我发现了一个以丑陋的方式失败的情况:如果您的脚本是使用execfile()
从另一个python脚本执行的。
在这种情况下,您会发现Python退出后将无法定位您的函数,这很有意义。
我的问题是如何以不出现此问题的方式保留此功能。
我认为您遇到的问题是当前工作目录的位置。 您可以确保执行以下操作来指定正确的位置:
import os
target = os.path.join(os.path.dirname(__file__), "mytarget.py")
这对我有用。 我创建了一个要由另一个文件a.py
执行的文件:
$ cat a.py
import atexit
@atexit.register
def myexit():
print 'myexit in a.py'
然后b.py
调用execfile:
$ cat b.py
import atexit
@atexit.register
def b_myexit():
print 'b_myexit in b.py'
execfile('a.py')
当我运行b.py
,两个注册函数都被调用:
$ python b.py
myexit in a.py
b_myexit in b.py
请注意,当我运行它们时,这两个脚本都位于同一目录中。 如果您的a.py
位于Ryan Ginstrom在回答中提到的单独目录中,则需要使用完整路径,例如:
execfile('/path/to/a.py')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.