前几天打开手机相册发现自己相册里面居然有一万多张图片,一个一个选择删除真是删烦了,

所以自己做了一个小应用来帮我。

也许你会说为什么不导入到电脑上进行删除,没办法我就是想整点不一样的,学了python就是喜欢整点骚操作。(手动滑稽)

所以下面就在手机上使用python进行一波骚操作。。。

准备工具

首先你得有个手机,233(和没说一样),咳咳 说正经的,既然我要在手机上运行python了,这里我推荐pydroid3,因为代码是基于python3.6写的(f-string的使用)

为了方便大家下载,我给大家提供了百度云下载的地址:后台回复:pydroid即可。

安装打开之后这个样子

剩下的就是运行代码了,这个后面我们再说.

思路

在做这件事之前我们得知道具体如何去做。

1.确定待处理图片文件所在目录

2.然后确定要删除哪些图片,这里我们以图片创建日期为准进行筛选。

3.为了防止误删,安全起见在该文件夹里创建一个trash目录,首先把目标图片移动到该文件夹,然后确认图片可以删除之后再进行删除。就像不要轻易使用rm一样,你懂得。给自己留一个反悔的时间。

代码实现

好了既然思路确定了我们就可以动手实现了。

1.确认文件所在文件夹,这里使用pathlib模块,pathlib是python3里的一个标准库,主要也是操作路径,和os模块操作路径比要说区别的话,就是拼接路径有时候比较方便,最好的就是两个配合着使用。好了下面上代码

import pathlib dir_path = pathlib.Path(filename).resolve().parent

resolve方法是获取文件运行时的目录,parent是获取上一级目录,也就是图片的所在文件夹

2.创建trash目录,移动之后的图片所在目录。

思路分析中提到这个文件夹得作用就是类似垃圾箱可以确认后再删除。

trash_dir = dir_path.joinpath("trash")

我们可以通过joinpath方法进行拼接路径,os.path.join()需要填二个参数,这里只需要一个即可,这就是优势。但是需要注意的是这个方法最终获取的路径是个对象不是字符串

在后面的使用中需要转换成字符串形式的路径.

3.接下来我们知道我们需要操作的文件类型是图片,这里我以jpg为例,当然如果你的图片是png你可以写png,python3的标准库提供了glob模块,这模块可以设置匹配规则去获取需要匹配的图片列表。

import glob image_path_list = glob.glob(to_str_path(dir_path.joinpath("*.jpg")))

之前说获取的路径是对象所以to_str_path是一个转换成字符串路径的方法。

*.jpg可以匹配所以后缀为jpg的文件生产结果列表。

4.文件都获取完了但是并不一定都是我们需要的,我们需要的指定日期内的文件

import os file_time = os.path.getctime(image_path)

通过getctime我们获取了图片创建时间,进行进一步筛选。

5.文件都准备好了,我们就需要移动到trash目录,等待处理了。

通过os模块的rename方法或者shutils的move方法可以对文件进行移动,这里我选择os模块

import os os.rename("移动前完整文件路径", "移动后完整文件路径")

6.此时文件就在trash目录了。

然后确认完了就可以删了,如果没问题就执行delete方法.

这里提供两种删除方式一种是删除所有文件,一种是整个文件夹都删除,两种唯一的区别就是下次不用创建trash目录了,没多大区别.

if del_type == "dir": shutil.rmtree(trash_path) # 递归删除一个目录以及目录内的所有内容 else: if os.path.exists(trash_path): file_list = os.listdir(trash_path) if file_list: remove_f = partial(remove, trash_path=trash_path) start_thread(remove_f, file_list)

演示

首先确定需要整理的文件在哪个目录。

这里用我之前的手机截图目录为例。这里有个小问题就是,我怎么知道我的截图文件在哪个目录….

一般手机查看图片的时候都有个详细信息这里面一般有路径。向下面这样。

通过图片我们可以清楚的看到路径在截图文件夹里,至此我们就确定了文件的目录。

然后为了方便我们就在需要操作的目录里执行python脚本,打开前面我们安装的pydroid3

然后按照我的操作

1.将代码复制到下面的框里

图片太大无法演示整个过程了 看博客园的图吧。

可以把newfile改个别的名字.

2.调用方法传入参数

方法传入日期参数格式例如20190101。

这里以20171227为例运行代码。

在运行之后没有结果,后来看了一眼图片知道了,程序默认图片格式是jpg,我的截图都是png,所以我需要指定filetype参数为png,同是date_str参数设置为20171227.

运行代码:

之后会发现指定的文件已经在trash目录了,

3.之后就可以执行delete方法删除了.

结语

到此为止,教程就这结束了,本来打算写成多线程版的提提速来着结果发现好像手机没反应,所以最好还是使用循环操作文件了,这里只是提供这么一个思路,代码没什么难度。关键是看用途,怎么样你学会了么。

学习从来不是一个人的事情,要有个相互监督的伙伴,工作需要学习python或者为了入行、转行学习python的伙伴可以私信回复小编“学习”,资源共享和大牛面对面交流

python删除图片_python小应用之删光你的珍藏图片相关推荐

  1. python 比特输出_Python小碗菜:and/or 与 amp;/| 到底有什么区别

    前言 在对Python的学习过程中,经常有人会问:对于逻辑运算,and/or 与 &/| 的区别在哪里?用哪个好?真的是哪个输入简单一点用哪个吗?其实他们是有内在区别的:and和or判断的是 ...

  2. python使用视频_Python中操作各种多媒体,视频、音频到图片的代码详解

    我们经常会遇到一些对于多媒体文件修改的操作,像是对视频文件的操作:视频剪辑.字幕编辑.分离音频.视频音频混流等.又比如对音频文件的操作:音频剪辑,音频格式转换.再比如我们最常用的图片文件,格式转换.各 ...

  3. 步骤条自定义图片_小技巧丨如何使用word批量调整图片大小?

    导Lead语 不知道你们有没有遇到需要批量修改图片尺寸的难题?那么,在大量图片的前提下,如何才能快速修改呢? 今天就和大家分享一下我当初的解决方法: 1F在word中添加 选择多个对象功能 新建一个W ...

  4. python爬取京东商品图片_python利用urllib实现爬取京东网站商品图片的爬虫实例

    本例程使用urlib实现的,基于python2.7版本,采用beautifulsoup进行网页分析,没有第三方库的应该安装上之后才能运行,我用的IDE是pycharm,闲话少说,直接上代码! # -* ...

  5. python怎么制作游戏图片_Python游戏引擎开发(二):显示图片

    本篇文章是Python游戏引擎开发系列的第二篇文章,主要介绍如何显示图片,大家可以学习下. 在上一章中我们讲了如何创建窗口以及对界面进行重绘.可能有朋友不理解为什么要进行全窗口的重绘呢?我在这里可以大 ...

  6. python五子棋游戏_python小项目之五子棋游戏

    本文实例为大家分享了python五子棋游戏的具体代码,供大家参考,具体内容如下 1.项目简介 在刚刚学习完python套接字的时候做的一个五子棋小游戏,可以在局域网内双人对战,也可以和电脑对战 2.实 ...

  7. python gui按顺序显示图片_python tkinter GUI绘制,以及点击更新显示图片代码

    tkinter 绘制GUI简单明了,制作一些简单的GUI足够,目前遇到的一个问题是不能同时排列显示多幅图片(目前没找到同时显示解决方法), 退而求其次,改成增加一个update按钮,每次点下按钮自动更 ...

  8. python用户界面导入图片_python图形用户界面(六):可视化给图片添加上文字

    前言 本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑.如果觉得好可以分享转发,有问题的地方也欢迎指出,在此先行谢过. 前言 ...

  9. python print 换行_Python小课堂第21课:规整一下我们的输出之打印格式化与字符串...

    整齐的输出,不仅美观,还能方便我们更容易的定位问题的重点.所以我们有必要将我们的输出内容美化一下! 请点击右上角"关注"按钮关注我们,跟着木辛老师深入浅出的掌握输出格式化的方法吧! ...

最新文章

  1. IndentationError: unexpected indent python
  2. C2872 “ACCESS_MASK”: 不明确的符号
  3. Java Web项目运行流程
  4. 流程DEMO-补打卡
  5. 集线器(Hub)、交换机(Switch)与路由器(Router)之间的区别和联系
  6. [译].Net中的内存-什么分配在了哪里
  7. pythonbool类型数组生成_对numpy中布尔型数组的处理方法详解
  8. 使用ABAP Push Channel(APC)开发的乒乓球游戏,可双打 1
  9. Astar2007初赛第一场的题目2
  10. ps文字换行_零基础一周内熟悉使用PS基础工具【Photoshop教程二】
  11. 软件项目管理期末复习---项目立项
  12. cad填充图案乱理石_CAD教程:CAD填充图案管理技巧
  13. 近期你已经授权登录过_不查不知道,我的微信、QQ 居然授权登录过这么多应用!...
  14. Moment Generating Function
  15. 线性代数计算器C语言(1)——计算行列式值
  16. 【干货】洋葱淘elya妞:电商小白产品操盘心得,洋葱淘如何搞到种子用户
  17. 2022(核酸年)结束了
  18. Easyx中鼠标的使用。
  19. 如何保证云docker容器重启后数据不丢失
  20. PPTV网络电视 3.1.9.0042官方正式版下载 (原PPLive)

热门文章

  1. matlab画光顺曲线,曲线曲面
  2. 汇编语言,and、or指令
  3. 国内镜像大全(部分)
  4. Linux下路由器的配置
  5. 航母级app横空出世 百事哈哈狂飙蓝海
  6. 「智慧医疗」HL7消息解析实战Demo
  7. (附源码)springboot高校社团管理系统的开发毕业设计231128
  8. 美化Ubuntu18桌面伪装成MAC桌面
  9. matlab求传递函数在某个频率点的增益_EQ均衡器频率特性的原理——Q值与带宽、滤波器...
  10. ESP8266+红外模块制作万能网路遥控器