0

如果文件具有特定扩展名,是否可以在创建文件时在其上运行脚本?

让我们称那个扩展名为“bar”

如果我创建文件“foo.bar”,那么我的脚本将使用该文件作为输入运行。

每次保存此文件时,它也会在该文件上运行。

我可以这样做吗?如果是,如何?如果不是,为什么?

注意:如果有一些技术上为什么这是不可能的,但我可以做得非常接近,那也有效!

4

2 回答 2

1

如果您使用的是 linux,请使用网站上描述的pyinotify,如下所示Pyinotify: monitor filesystem events with Python under Linux

如果您还希望它在 Mac OS X 和 Windows 上工作,您可以查看这个答案这个库

于 2013-09-19T21:48:04.023 回答
0

您可以做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,这应该对您有用。

于 2013-09-19T22:22:38.040 回答