如果文件具有特定扩展名,是否可以在创建文件时在其上运行脚本?
让我们称那个扩展名为“bar”
如果我创建文件“foo.bar”,那么我的脚本将使用该文件作为输入运行。
每次保存此文件时,它也会在该文件上运行。
我可以这样做吗?如果是,如何?如果不是,为什么?
注意:如果有一些技术上为什么这是不可能的,但我可以做得非常接近,那也有效!
您可以做Werkzeug 所做的事情(此代码直接从链接复制):
def _reloader_stat_loop(extra_files=None, interval=1):
"""When this function is run from the main thread, it will force other
threads to exit when any modules currently loaded change.
Copyright notice. This function is based on the autoreload.py from
the CherryPy trac which originated from WSGIKit which is now dead.
:param extra_files: a list of additional files it should watch.
"""
from itertools import chain
mtimes = {}
while 1:
for filename in chain(_iter_module_files(), extra_files or ()):
try:
mtime = os.stat(filename).st_mtime
except OSError:
continue
old_time = mtimes.get(filename)
if old_time is None:
mtimes[filename] = mtime
continue
elif mtime > old_time:
_log('info', ' * Detected change in %r, reloading' % filename)
sys.exit(3)
time.sleep(interval)
您必须生成一个单独的线程(这就是 Werkzeug 所做的),但是如果您不想添加 pyinotify,这应该对您有用。