使用Python监视指定目录下文件变更的方法


Posted in Python onOctober 15, 2018

监视指定目录下文件变更。

# -*- coding: utf-8 -*-
# @Author: xiaodong
# @Date: just hide
# @Last Modified by: xiaodong
# @Last Modified time: just hide
import os
import glob
import json
import datetime

from typing import Iterable

"""
监视指定目录下文件变更
"""

def penetrate(root: os.path) -> Iterable:
 for ele in glob.glob(os.path.join(root, '*')):
 if os.path.isdir(ele):
  yield ele
  yield from penetrate(os.path.abspath(ele))
 else:
  yield ele


def update(s: set, exists: bool=False, mode: str='w') -> None or dict :
 with open('file_records.json', encoding='utf-8', mode=mode) as file:
 if not exists:
  json.dump({'datetime': str(datetime.datetime.now()),
   'files': list(s)}, file, ensure_ascii=False, indent=10)
 else:
  return json.load(file)


def main(s: set=set(), root: os.path='.')-> None:
 for path in penetrate(root):
 s.add(path)

 if not os.path.exists('file_records.json'):
 update(s)
 else:
 d = update(None, True, 'r')
 files = s - set(d['files'])
 files2 = set(d['files']) - s
 if files:
  print('增加文件: ', files)
 if files2:
  print('删除文件: ', files2)
 if files or files2:
  update(s)
  print('更新成功!')


if __name__ == "__main__":
 main()

以上这篇使用Python监视指定目录下文件变更的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python for Informatics 第11章之正则表达式(四)
Apr 21 Python
Python实现八大排序算法
Aug 13 Python
Python通过命令开启http.server服务器的方法
Nov 04 Python
详解python的ORM中Pony用法
Feb 09 Python
PyQt5实现QLineEdit添加clicked信号的方法
Jun 25 Python
对Python3之方法的覆盖与super函数详解
Jun 26 Python
如何利用Python开发一个简单的猜数字游戏
Sep 22 Python
python环境搭建和pycharm的安装配置及汉化详细教程(零基础小白版)
Aug 19 Python
浅析PyCharm 的初始设置(知道)
Oct 12 Python
Pytorch实验常用代码段汇总
Nov 19 Python
Python创建自己的加密货币的示例
Mar 01 Python
利用python做表格数据处理
Apr 13 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
Oct 15 #Python
彻彻底底地理解Python中的编码问题
Oct 15 #Python
widows下安装pycurl并利用pycurl请求https地址的方法
Oct 15 #Python
解决python3 安装完Pycurl在import pycurl时报错的问题
Oct 15 #Python
Python安装pycurl失败的解决方法
Oct 15 #Python
django框架之cookie/session的使用示例(小结)
Oct 15 #Python
Python访问MongoDB,并且转换成Dataframe的方法
Oct 15 #Python
You might like
PHP 获取远程网页内容的代码(fopen,curl已测)
2011/06/06 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
js隐藏与显示回到顶部按钮及window.onscroll事件应用
2013/01/25 Javascript
Jjcarousellite 实现图片列表滚动的简单实例
2013/11/29 Javascript
js中继承的几种用法总结(apply,call,prototype)
2013/12/26 Javascript
javascript history对象(历史记录)使用方法(实现浏览器前进后退)
2014/01/07 Javascript
JavaScript实现表格点击排序的方法
2015/05/11 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
JS实现的网页背景闪电闪烁效果代码
2015/10/17 Javascript
JS实现新浪博客左侧的Blog管理菜单效果代码
2015/10/22 Javascript
分享jQuery插件的学习笔记
2016/01/14 Javascript
JQuery+EasyUI轻松实现步骤条效果
2016/02/22 Javascript
基于Bootstrap+jQuery.validate实现表单验证
2016/05/30 Javascript
AngularJS动态生成div的ID源码解析
2016/08/29 Javascript
Bootstrap和Java分页实例第一篇
2016/12/23 Javascript
jquery实现文字单行横移或翻转(上下、左右跳转)
2017/01/08 Javascript
详解webpack自动生成html页面
2017/06/29 Javascript
JS实现给json数组动态赋值的方法示例
2020/03/19 Javascript
jQuery Datatables表头不对齐的解决办法
2017/11/27 jQuery
详解React-Router中Url参数改变页面不刷新的解决办法
2018/05/08 Javascript
JS使用tween.js动画库实现轮播图并且有切换功能
2018/07/17 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
2018/07/25 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
2019/06/12 jQuery
微信小程序通过js实现瀑布流布局详解
2019/08/28 Javascript
vue 计算属性和侦听器的使用小结
2021/01/25 Vue.js
[01:15:15]VG VS EG Supermajor小组赛B组胜者组第一轮 BO3第二场 6.2
2018/06/03 DOTA
python中的二维列表实例详解
2018/06/19 Python
python 获取url中的参数列表实例
2018/12/18 Python
几个适合python初学者的简单小程序,看完受益匪浅!(推荐)
2019/04/16 Python
Pandas中resample方法详解
2019/07/02 Python
python基于plotly实现画饼状图代码实例
2019/12/16 Python
Daniel Wellington官方海外旗舰店:丹尼尔惠灵顿DW手表
2018/02/22 全球购物
贝尔帐篷精品店:Bell Tent Boutique
2019/06/12 全球购物
元旦文艺汇演主持词
2014/03/26 职场文书
班主任新年寄语
2014/04/04 职场文书
单位同意报考证明
2015/06/17 职场文书