Python 检测新目录?

Python 检测新目录?,python,directory,Python,Directory,我想监控一个网络驱动器路径,检测是否复制了任何新目录,然后自动将整个目录复制到本地驱动器 我有以下几点想法: 创建一个python脚本,该脚本可以维护网络驱动器路径中的文件数,并将其保存到本地临时文件 我将每2/3小时运行一次脚本,并将当前目录数与上次计数进行比较。如果当前编号大于上一个编号,只需复制这些目录并粘贴到本地目录即可。通过这种简单的方法,我可以找出是否有任何新的目录,对吗 但是,我想知道python中是否还有其他更好的方法或功能强大的库,以便我可以轻松地检测网络路径中新复制的目录。我

我想监控一个网络驱动器路径,检测是否复制了任何新目录,然后自动将整个目录复制到本地驱动器

我有以下几点想法:

  • 创建一个python脚本,该脚本可以维护网络驱动器路径中的文件数,并将其保存到本地临时文件

  • 我将每2/3小时运行一次脚本,并将当前目录数与上次计数进行比较。如果当前编号大于上一个编号,只需复制这些目录并粘贴到本地目录即可。通过这种简单的方法,我可以找出是否有任何新的目录,对吗


  • 但是,我想知道python中是否还有其他更好的方法或功能强大的库,以便我可以轻松地检测网络路径中新复制的目录。

    我正在使用此库监视文件系统更改-

    链接中给出了最简单的示例

    import sys
    import time
    import logging
    from watchdog.observers import Observer
    from watchdog.events import LoggingEventHandler
    
    if __name__ == "__main__":
        logging.basicConfig(level=logging.INFO,
                            format='%(asctime)s - %(message)s',
                            datefmt='%Y-%m-%d %H:%M:%S')
        path = sys.argv[1] if len(sys.argv) > 1 else '.'
        event_handler = LoggingEventHandler()
        observer = Observer()
        observer.schedule(event_handler, path, recursive=True)
        observer.start()
        try:
            while True:
                time.sleep(1)
        except KeyboardInterrupt:
            observer.stop()
        observer.join()
    

    这意味着您可以自定义自己的逻辑,以“保存到本地临时文件”和“将当前目录数与上次计数进行比较”。

    @LevLevitsky:我猜这些答案中的许多都不适用于网络装载,因此OP可能需要更多的指导才能得到答案。您可以在安装驱动器的主机上安装软件吗?因为一般来说,监视本地驱动器上的更改,然后将这些更改发送到其他地方,比监视远程安装的驱动器上的更改要好。如果一个目录被添加,另一个目录被删除怎么办?计数不变。这对网络共享有效吗?快速浏览一下,它在linux上使用了
    inotify
    ,不会注意到NFS或SMB装载上的更改。类似地,OS X上的
    FSEvents
    不会注意到NFS或SMB或(有时)AFP装载上的更改。我不确定Windows上的ReadDirectoryChangesW,但我猜它是类似的。Windows(具有I/O完成端口的ReadDirectoryChangesW;ReadDirectoryChangesW工作线程)独立于操作系统(轮询磁盘以获取目录快照并定期比较;缓慢且不推荐),所以您是说它可能工作,但仅通过使用“缓慢且不推荐”的方法?(我猜你还没有测试。)没有。我是Mac和Linux用户。我从未在Windows上尝试过此功能。:-)但是,您是否在Mac或Linux上使用远程共享进行过测试?我不知道它是否能在Windows上工作,但我99%肯定它在Mac或Linux上不会工作(可能通过“缓慢且不推荐”的方法除外)。