在创建某个文件时运行脚本

时间:2013-09-19 21:41:46

标签: python file

如果文件具有特定的扩展名,是否可以在文件创建时运行该文件?

让我们称之为扩展名“bar”

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

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

我能这样做吗?如果有,怎么样?如果没有,为什么?

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

2 个答案:

答案 0 :(得分:1)

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

如果您还希望它能够在Mac OS X和Windows上运行,您可以查看此answerthis library

答案 1 :(得分:0)

您可以执行Werkzeug does(此代码直接从链接中复制):

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,这应该适合你。