使用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中第三方库Requests库的高级用法详解
Mar 12 Python
利用numpy和pandas处理csv文件中的时间方法
Apr 19 Python
Python实现随机漫步功能
Jul 09 Python
pyqt5的QComboBox 使用模板的具体方法
Sep 06 Python
PyQt5实现五子棋游戏(人机对弈)
Mar 24 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
Jun 13 Python
Python定义函数时参数有默认值问题解决
Dec 19 Python
Python多线程:主线程等待所有子线程结束代码
Apr 25 Python
Python如何实现爬取B站视频
May 20 Python
django跳转页面传参的实现
Sep 17 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
Nov 12 Python
Python之多进程与多线程的使用
Feb 23 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 反向排序和随机排序代码
2010/06/30 PHP
php读取mysql乱码,用set names XXX解决的原理分享
2011/12/29 PHP
php中通过DirectoryIterator删除整个目录的方法
2015/03/13 PHP
基于php实现随机合并数组并排序(原排序)
2015/11/26 PHP
Zend Framework处理Json数据方法详解
2016/12/09 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
2017/04/27 PHP
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
javascript中的变量是传值还是传址的?
2010/04/19 Javascript
基于jquery实现的表格分页实现代码
2011/06/21 Javascript
JQuery自适应窗口大小导航菜单附源码下载
2015/09/01 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
2016/12/30 Javascript
过期软件破解办法实例详解
2017/01/04 Javascript
vue+mockjs模拟数据实现前后端分离开发的实例代码
2017/08/08 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
在Vue中使用icon 字体图标的方法
2019/06/14 Javascript
深入了解Hybrid App技术的相关知识
2019/07/17 Javascript
vue的路由映射问题及解决方案
2019/10/14 Javascript
vue实现微信浏览器左上角返回按钮拦截功能
2020/01/18 Javascript
浅析JavaScript 函数防抖和节流
2020/07/13 Javascript
[00:52]玛尔斯技能全介绍
2019/03/06 DOTA
详解python eval函数的妙用
2017/11/16 Python
Python程序退出方式小结
2017/12/09 Python
解决csv.writer写入文件有多余的空行问题
2018/07/06 Python
python调用百度语音识别api
2018/08/30 Python
Python2与Python3的区别实例分析
2019/04/11 Python
Python字典对象实现原理详解
2019/07/01 Python
Python使用type关键字创建类步骤详解
2019/07/23 Python
Python图像阈值化处理及算法比对实例解析
2020/06/19 Python
解决运行出现'dict' object has no attribute 'has_key'问题
2020/07/15 Python
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
c/c++某大公司的两道笔试题
2014/02/02 面试题
社区护士演讲稿
2014/08/27 职场文书
村主任“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
优秀党员推荐材料
2014/12/18 职场文书
导游词之山东红叶谷
2019/10/31 职场文书
Golang 如何实现函数的任意类型传参
2021/04/29 Golang