使用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模块学习 datetime介绍
Aug 27 Python
Java中重定向输出流实现用文件记录程序日志
Jun 12 Python
Python3访问并下载网页内容的方法
Jul 28 Python
python去除文件中空格、Tab及回车的方法
Apr 12 Python
Python自动发邮件脚本
Mar 31 Python
Python中对象的引用与复制代码示例
Dec 04 Python
Python学习之用pygal画世界地图实例
Dec 07 Python
Django中的Signal代码详解
Feb 05 Python
python3 爬取图片的实例代码
Nov 06 Python
pycharm创建scrapy项目教程及遇到的坑解析
Aug 15 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
Dec 13 Python
Python用类实现扑克牌发牌的示例代码
Jun 01 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对象相互引用的内存溢出实例分析
2014/08/28 PHP
PHP实现的简单分页类及用法示例
2016/05/06 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
JQuery SELECT单选模拟jQuery.select.js
2009/11/12 Javascript
探索Emberjs制作一个简单的Todo应用
2012/11/07 Javascript
原生js和jquery中有关透明度设置的相关问题
2014/01/08 Javascript
JavaScript计算某一天是星期几的方法
2015/08/05 Javascript
jQuery实现获取元素索引值index的方法
2016/09/18 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
2017/01/04 Javascript
jQuery EasyUI Panel面板组件使用详解
2017/02/28 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
2017/09/12 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
js实现无缝轮播图效果
2020/03/09 Javascript
5个你不知道的JavaScript字符串处理库(小结)
2020/06/01 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
2020/07/29 Javascript
返回上一个url并刷新界面的js代码
2020/09/12 Javascript
[01:14]DOTA2亚洲邀请赛 ShowOpen
2015/02/07 DOTA
[01:00:25]NB vs Secret 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
python中的多线程实例教程
2014/08/27 Python
Python去除列表中重复元素的方法
2015/03/20 Python
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
详解python进行mp3格式判断
2016/12/23 Python
python将一个英文语句以单词为单位逆序排放的方法
2018/12/20 Python
浅谈tensorflow之内存暴涨问题
2020/02/05 Python
python中提高pip install速度
2020/02/14 Python
Python解析微信dat文件的方法
2020/11/30 Python
使用CSS3代码绘制可爱的Hello Kitty猫
2016/08/03 HTML / CSS
css3 自定义字体font-face使用介绍
2014/05/14 HTML / CSS
蒙蒂塞罗商店:Monticello Shop
2018/11/25 全球购物
.NET面试问题集
2015/12/08 面试题
财务会计专业个人求职信范本
2014/01/08 职场文书
致跳高运动员广播稿
2014/01/13 职场文书
万年牢教学反思
2014/02/15 职场文书
八项规定自查自纠报告及整改措施
2014/10/26 职场文书
理想国读书笔记
2015/06/25 职场文书
javascript的setTimeout()使用方法总结
2021/11/20 Javascript