惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
aimingoo的专栏
aimingoo的专栏
Jina AI
Jina AI
Microsoft Security Blog
Microsoft Security Blog
IT之家
IT之家
V
Visual Studio Blog
量子位
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 聂微东
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
大猫的无限游戏
大猫的无限游戏
Y
Y Combinator Blog
Stack Overflow Blog
Stack Overflow Blog
D
Docker
MyScale Blog
MyScale Blog
小众软件
小众软件
云风的 BLOG
云风的 BLOG
美团技术团队
Microsoft Azure Blog
Microsoft Azure Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Last Week in AI
Last Week in AI
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 【当耐特】

碎言

不懂就别瞎掰掰:【程序员的常识】写的什么玩意? AI 辅助编程下的程序设计与代码编写 使用 Next.js 和 Tailwind CSS 构建可编辑和删除的 ToDo 待办事项应用 探索编程新境界:MarsCode 助你一臂之力 使用 Next.js 和 Tailwind CSS 搭建静态图片展示站点并部署到 Vercel AI 辅助编程:免费工具的优缺点及官网一览 GitHub push更新总是失败,写个python脚本解决 把博客从GitHub迁移到到了vercel ComfyUI 和 Flux.1 安装与使用教程 Flux.1 入门必知:硬件、环境、模型 Git项目的子文件夹中的内容无法同步到远程仓库的解决方法 blender流体Fluid使用中没有流体、流体穿模等一些问题的解决方法 博客聚合网站:积薪,竟然关闭了! blender日常使用中的一些技巧 虽然只有我自己在用,但还是更新了碎言博客的源代码, 与其在迷茫中困惑,不如在努力中前进 差点忘了我还有一个博客... 秧歌、博客和AI 终于熬到了新手上路 好久没有更新博客了。。。 老妈大腿骨骨折,最近一直在医院护理 Hello, September! Ubuntu开机自动启动Docker容器运行WordPress Docker 简单快速安装部署WordPress Docker下安装MySQL 加碘盐能防核辐射的话,还怕什么核战争? shields.io 一个简洁、一致、清晰的徽章 Ubuntu下使用root登录ssh的设置 GitHub Actions 构建、部署 Next.js项目 我又用回了"IE"--edge
基于Python、Tk构建的可视化目录文件同步助手
J.sky · 2017-10-26 · via 碎言

之前用java GUI写过一个简单的目录同步助手,前几天在WIN10下边想用的时候,发现竟然无法使用了,正好最近在学习python,所以用python重写了一简单的目录文件同步助手。

输入图片说明

功能需求

之前有些喜欢拍照,但设备和场景比较多,所以每次照相回来,都为每台设备创建目录,然后在目录下边创建以时间为名的目录进行照片备份。 之后这个备份了几年,后来目录越来越多,经常发现无法准确的判断哪些照片是否备份过,因为实在太多了,所以,需要一个实际目录与备份目录比较, 并且能把比较后的结果复制到备份目录中进行备份。

需求分析

从需求上分析:参数需要给定两个目录,然后有比较和复制两个功能,GUI构建上只需要两个目录选择和两个按钮,使用Tk即可实现。 技术上实现采用python的 filecmp shutil os 进行一些目录及文件的比较及复制来实现需求。

逻辑分析

通过目录选择框获得了两个字符串,然后进行比较,分析出不同的目录与文件,然后复制到目标目录中。 为此,我创建了一个目录比较类,专门负责比较目录与文件。 此类中的比较方法中使用到了递归,Python中的递归记得最大是1000次,我觉得这个目录层次应该是够了吧? 其实本程序中,目录与文件的分析是重要部分:

  • 先判断根目录中不相同的目录与文件,然后分别记录。
  • 如果有相同的目录,使用递归比较这二个相同的目录。
  • 最后分别创建目录,复制文件到目标目录中。

Tk Button传参方法

在构建GUI的时候,点击按钮激活的函数需要传参数进去,但Python并没有在Button中提供传参的方法,后来查到可以使用lambda

command=lambda: def(参数1, 参数2)

这样即可达到函数传参的实现。

目录与文件的操作

通过这个小软件的制作,达到了对python目录及文件的分析及创建复制的模块功能的复制,功能上还可以继续扩展,后续有需要再继续添加。

本文源码下载