手机使用python操作图片文件

熵烬
• 阅读 1848

手机使用python操作图片文件

起因

前几天去国图拍了一本书,一本心理学方面的书,也许你问我为什么不去买一本,或者去网上找pdf。 其实吧,关于心理学方面的书可以说在市面上一抓就是一堆,至于拍这本书两个原因,一个是没有什么收藏价值不值得我去买,只适合应急用,然后就是这本书的作者写作特点和其他大众的不太一样,可以说是有特点或者偏门,于是我就在手机上拍了一堆的图片,后来整理成了pdf,但是昨天我看的时候原图片文件还在快上千了吧,一个一个选择删除真是删烦了,
也许你会说为什么不导入到电脑上进行删除,没办法我就是想整点不一样的,学了python就是喜欢整点骚操作。(手动滑稽)
所以下面就在手机上使用python进行一波骚操作。。。

准备工具

首先你得有个手机,233(和没说一样),咳咳 说正经的,既然我要在手机上运行python了,这里我推荐pydroid3,因为代码是基于python3.6写的(f-string的使用)
为了方便大家下载,我给大家提供了百度云下载的地址:
关注公众号:python学习开发.后台回复:pydroid即可。
安装打开之后这个样子
手机使用python操作图片文件
剩下的就是运行代码了,这个后面我们再说.

思路

在做这件事之前我们得知道具体如何去做。
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操作图片文件 通过图片我们可以清楚的看到路径在截图文件夹里,至此我们就确定了文件的目录。

然后为了方便我们就在需要操作的目录里执行python脚本,打开前面我们安装的pydroid3
然后按照我的操作
1.将代码复制到下面的框里
手机使用python操作图片文件
可以把newfile改个别的名字.
2.调用方法传入参数
方法传入日期参数格式例如20190101。
这里以20171227为例运行代码。
在运行之后没有结果,后来看了一眼图片知道了,程序默认图片格式是jpg,我的截图都是png,所以我需要指定filetype参数为png,同是date_str参数设置为20171012.
运行代码:
手机使用python操作图片文件
之后会发现指定的文件已经在trash目录了,
手机使用python操作图片文件
3.之后就可以执行delete方法删除了.

结语

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

如需获取完整代码请关注微信公众号:python学习开发,查找同名文章获取完整代码。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java后端学习路线建议
前言!(https://oscimg.oschina.net/oscnet/6711c2b340192737d579f2d1c6541373efc.jpg)进入IT领域,就像进入大海—浩瀚而广阔。然而,它又很容易让人迷茫,不知所措。所以,在IT的海洋中,找好一艘船特别重要,这艘船带你前进、减少迷失。这艘船或许是一个人,或一本书,
lucien-ma lucien-ma
4年前
python文件的第一行 #!/usr/bin/python3 是什么意思?
python文件的第一行代码通常在脚本语言的第一行会看到:!/usr/bin/envpython或!/usr/bin/python首先要确定的一点是它不是注释。这两句话的目的都是指出你的python文件用什么可执行程序去运行它。1.!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释
Aidan075 Aidan075
4年前
爬取五大平台621款手机,告诉你双十一在哪买最便宜!
↑关注置顶有趣的不像个技术号今晚0点,相约剁手大家好,我是朱小五明天就是双十一了,看了看自己手里的卡的像IE浏览器的手机,感觉可能等不到5G普及了。我!要!换!手!机!去哪买呢?作为一个机(pin)智(qiong)boy,肯定要比价啊,哪家便宜去哪家我用Python爬取了某比价网站的手机数据,获取了其中五大平台(天猫,京东,
红橙Darren 红橙Darren
4年前
NDK开发前奏 - 实现支付宝人脸识别功能
1.基于AndroidStudio的opencv配置与使用先推荐一本书《计算机视觉算法与应用》,相信用过OpenCV的哥们都知道这是用来干啥的,这里我就不再啰嗦。只说一下他的应用领域:人机互动、物体识别、图像分割、人脸识别、动作识别、运动跟踪、机器人、运动分析、机器视觉、结构分析、汽车安全驾驶等等。这次我们主要用它来做人脸识别,注意人脸
Karen110 Karen110
4年前
醒醒!Python已经支持中文变量名啦!
作者:豌豆花下猫来源:Python猫最近,我在翻阅两本比较新的Python书籍时,发现它们都犯了一个严重的低级错误!这两本书分别是《Python编程:从入门到实践》和《父与子的编程之旅》,它们都是畅销书,都在2020年10月出了新版本,都使用Python3.7版本的语法。然而,在关于变量的命名规则部分,它们犯下了一样的错误,即还在使用Py
科工人 科工人
4年前
初学Go语言,对channel、并发的思考
初学go语言,对channel、并发感觉不太好理解。希望高人指点下。下面的代码是我看到一本书上的,就是讲解channel的。packagemainimport("fmt""math/rand")functest(chchanint,iint){ch<rand.Int()fmt.Println(i
梦想橡皮擦 梦想橡皮擦
4年前
5. Python 循环的本质就是一段代码懒得重复写
为啥要滚雪球学Python,目的就是当你学会编程一些思想之后,可以让知识的雪球自行滚动起来。五、Python循环的本质就是一段代码懒得重复写程序中的循环概念非常容易理解,一段相似的代码不想重复去写,然后让程序去完成这个操作就是循环。例如从1加到100,如果你依次去加会发现,代码又臭又长,最好的写法当然是让程序通过循环依次去累加。
Stella981 Stella981
3年前
Python使用又拍云进行第三方文件拉取
在爬虫过程中,需要将图片或其他文件进行存储到云上,但在下载图片时,看官方文档,貌似需要先下载到后再上传又拍云,感觉效率很低下。经查找资料实现Python直接对第三方资源进行文件拉取操作,即不需要下载到本地,代码如下:importupyunupupyun.UpYun('xxxxx','xxxxx','xxxxx')您
Wesley13 Wesley13
3年前
MySQL的存储引擎InnoDB选择了B+ 树
     我们知道数据的存储和检索是两个很重要的功能,当我们的数据量大了,怎么能快速的检索数据呢,答案是使用索引,可索引具体的技术实现有很多,选择哪一种呢,我就以mysql为例记录下它为什么选择了B树作为索引的实现方式。1. 索引简介  索引是一种用于快速查询行的数据结构,就像一本书的目录就是一个索引,如果想在一本书中找
Python进阶者 Python进阶者
2年前
用Python脚本自动采集金融网站当天发布的免费报告
大家好,我是皮皮。一、前言前几天在Python群【林生】问了一个Python数据采集的问题,需求如下:想写一个脚本能自动采集下载当天发布的这个页面的这几个免费报告,能保存成这个标题的pdf文件,网站是手机号注册就能下载这些文件的,就是在我注册登录状态下,能
Python进阶者 Python进阶者
1年前
请问我用cpca三方库解析地址,但是总会漏一部分解析不出来?
大家好,我是Python进阶者。一、前言前几天在Python钻石交流群【逆光】问了一个Python数据处理的问题,问题如下:请问我用cpca三方库解析地址,但是总会漏一部分解析不出来,请问这个咋整呀?我处理了,就是还剩这14个,请问要咋处理呀?二、实现过程