使用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中实现对Timestamp和Datetime及UTC时间之间的转换
Apr 08 Python
python使用post提交数据到远程url的方法
Apr 29 Python
代码分析Python地图坐标转换
Feb 08 Python
python中abs&map&reduce简介
Feb 20 Python
对python 各种删除文件失败的处理方式分享
Apr 24 Python
Django 实现购物车功能的示例代码
Oct 08 Python
对python 匹配字符串开头和结尾的方法详解
Oct 27 Python
Python发送邮件功能示例【使用QQ邮箱】
Dec 04 Python
python 并发编程 阻塞IO模型原理解析
Aug 20 Python
如何在mac版pycharm选择python版本
Jul 21 Python
Python 数据的累加与统计的示例代码
Aug 03 Python
Selenium浏览器自动化如何上传文件
Apr 06 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
用文本文件制作留言板提示(下)
2006/10/09 PHP
php编写的简单页面跳转功能实现代码
2013/11/27 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
2014/01/19 PHP
PHP CURL获取返回值的方法
2014/05/04 PHP
php中通过DirectoryIterator删除整个目录的方法
2015/03/13 PHP
PHP简单判断字符串是否包含另一个字符串的方法
2016/03/25 PHP
PHPExcel导出2003和2007的excel文档功能示例
2017/01/04 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
2018/09/03 PHP
php实现的顺序线性表示例
2019/05/04 PHP
Aster vs KG BO3 第一场2.19
2021/03/10 DOTA
ASP.NET jQuery 实例3 (在TextBox里面阻止复制、剪切和粘贴事件)
2012/01/13 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)
2013/06/28 Javascript
jquery live()重复绑定的解决方法介绍
2014/01/03 Javascript
JavaScript中的parse()方法使用简介
2015/06/12 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
2017/03/29 Javascript
Bootstrap datepicker日期选择器插件使用详解
2017/07/26 Javascript
JavaScript中如何判断一个值的类型
2017/09/15 Javascript
vue.js前后端数据交互之提交数据操作详解
2018/04/24 Javascript
Vue源码解析之Template转化为AST的实现方法
2018/12/14 Javascript
JS扁平化输出数组的2种方法解析
2019/09/17 Javascript
通过数据库对Django进行删除字段和删除模型的操作
2015/07/21 Python
python中利用队列asyncio.Queue进行通讯详解
2017/09/10 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
2019/04/15 Python
Python中函数参数匹配模型详解
2019/06/09 Python
python创建与遍历List二维列表的方法
2019/08/16 Python
Pytorch中的variable, tensor与numpy相互转化的方法
2019/10/10 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
Python selenium爬取微博数据代码实例
2020/05/22 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
食品厂厂长岗位职责
2014/01/30 职场文书
违反学校规则制度检讨书
2015/01/01 职场文书
雷峰塔导游词
2015/02/09 职场文书
运输公司工作总结
2015/08/11 职场文书
苹果macOS 13开发者预览版Beta 8发布 正式版10月发布
2022/09/23 数码科技