|前言
「教你玩 PY」的第三期开始啦,这一期要解决的问题是平时用电脑的时候总是会出现同一份文件出现很多次的情况,比如照片库里有一堆同样的照片,名称相同的还好办,但是如果内容相同,名称不同,就只能靠手动一个一个删,非常麻烦。
所以有没有办法用神奇的 Python 把这个问题解决呢?
答案当然是有的,本期就教你用 Python 做一个重复文件清理器,一键就能清理内容相同的文件。
大概的逻辑就是先获取目录下的所有文件,然后逐一相互比较,遇到相同的就删除一个,用流程图表示就是这样的:
接下来我就来教你如何把它变成程序。
「教你玩 PY」整个栏目是围绕如何玩「PY」(Python,一种简单易学且强大的编程语言),可以令你的工作效率提高,生活质量有所改善,这个栏目每两周会更新一次,每期会用编程的方法解决一个生活/工作上的痛点,当然,是面向没有编程基础的小白的。
|教程开始
本教程接下来的内容会默认你已经安装好 Python 的运行环境,并且以 Pycharm 和 Anaconda 作为默认工具。
如果你听不懂我在说什么,请按照这个教程走一遍再继续看接下来的内容:
0、第 0 步,如果你已经调试好 Pycharm 和 Anaconda 并且已经可以运行程序,则可以跳过,如果还没有,可以按照这个方法来调试:
① 打开 Pycharm,点击 Configure - Preferences.
② 选择左侧的 Project Interpreter,然后在右边点击齿轮图标,并选择 Add.
③ 在弹出来的窗口中点击左侧的 Conda Environment,并在右侧给 Make avialiable to all projects 打钩。
④点击 OK 之后,它会自己运行一堆东西,等待一会儿即可搞定。
*顺便附上一份源代码,可以参考注释理解:
# 以下为Windows/Mac/Linux/可在麻瓜编程在线环境运行的代码:
# coding:utf-8
importos
importfilecmp
# 需要把路径替换成你的文件夹所在路径,当把这个代码文件放在要处理的文件夹外一层时,可以使用下面的相对路径写法
path ='./'
# 在这里填入你想修改的文件夹
files = os.listdir(path)
dirs = files
# 将指定目录下的所有文件的路径存储到all_files变量中
defget_all_files(path, dirs):
all_files = []
fordindirs:
ifos.path.isfile(path + d):
all_files.append(os.path.join(path + d))
else:
cur_path = os.path.join(path, d)
files = os.listdir(cur_path)
forfinfiles:
all_files.append(os.path.join(cur_path, f))
returnall_files
# 比较两个文件的内容是否一致
defcmp_files(x, y):
iffilecmp.cmp(x, y):
# 如果一致,则删除第二个,保留第一个,并输出信息
os.remove(y)
print("路径\""+ y +"\"下的文件是重复文件,已经删除")
# 调用函数,获取文件列表
all_files = get_all_files(path, dirs)
# 用双重for循环来比较文件是否有重复
forxinall_files:
foryinall_files:
# 如果x和y不是相同的文件,而且都存在,则执行后续操作
ifx != yandos.path.exists(x)andos.path.exists(y):
# 比较两个文件的内容是否一致
cmp_files(x,y)
2、下载之后把它丢在你想进行清理重复文件的文件夹里,点击右键 - 选择从 Pycharm 打开:(这里以 macOS 为例,Win 下也是类似步骤)
3、然后在 Pycharm 的空白部分点击右键,选择 Run.
4、看到如下提示就表示已经运行成功了。
5、然后你就可以发现,重复的文件已经一个一个的被清理完毕了,并且就算是名称不同,只要内容是同一个图片,也会被乖乖清理走。
Enjoy it.
/* 往期文章 */
你可能会发现
这样的清理工具能解决一部分问题
但可能解决不了一些疑惑
比如:
这个代码是什么意思?
为什么不能加一个确认之后再删除的功能?
可以自由选择清理哪个文件夹吗?
可以做个图形界面吗?
以及更多更细化的需求…
而对于这些更进一步的需求,其实利用 Python 也可以做到。
如果你通过这个感受到了那么一点编程的魔力和乐趣的话。
这也是我开办这个『教你玩 PY』的目的。
『教你玩 PY』是和麻瓜编程合作的专栏,
麻瓜编程就是一个面向无基础小白学习编程的网站。
如果你希望学懂 Python,
用它解决生活上的问题。
推荐你去他们网站购买在线课程,
购买后可以终身随时看。
还有 24 小时的微信在线答疑。
每节课程也有实例代码和视频讲解。
基本只要有兴趣就能学会。
今晚 12 点前购入的话
可以直接加入
每周都有直播
每日都有测评的训练营
错过就要等下一轮啦~
直接戳下图按钮即可
↓
领取专属 10元无门槛券
私享最新 技术干货