手机使用python操作图片文件(pydroid3)过程详解


Posted in Python onSeptember 25, 2019

起因

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

准备工具

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

手机使用python操作图片文件(pydroid3)过程详解

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

思路

在做这件事之前我们得知道具体如何去做。1.确定待处理图片文件所在目录2.然后确定要删除哪些图片,这里我们以图片创建日期为准进行筛选。3.为了防止误删,安全起见在该文件夹里创建一个trash目录,首先把目标图片移动到该文件夹,然后确认图片可以删除之后再进行删除。就像不要轻易使用rm一样,你懂得。给自己留一个反悔的时间。

代码实现

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

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

好了下面上代码

import pathlibdir_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 globimage_path_list = glob.glob(to_str_path(dir_path.joinpath("*.jpg")))

之前说获取的路径是对象所以to_str_path是一个转换成字符串路径的方法。*.jpg可以匹配所以后缀为jpg的文件生产结果列表。

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

import osfile_time = os.path.getctime(image_path)

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

5.文件都准备好了,我们就需要移动到trash目录,等待处理了。通过os模块的rename方法或者shutils的move方法可以对文件进行移动,这里我选择os模块

import osos.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)过程详解

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

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

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

手机使用python操作图片文件(pydroid3)过程详解

可以把newfile改个别的名字.

2.调用方法传入参数方法传入日期参数格式例如20190101。这里以20171227为例运行代码。在运行之后没有结果,后来看了一眼图片知道了,程序默认图片格式是jpg,我的截图都是png,所以我需要指定filetype参数为png,同是date_str参数设置为20171012.

运行代码:

手机使用python操作图片文件(pydroid3)过程详解

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

手机使用python操作图片文件(pydroid3)过程详解

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

结语

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python3多进程 multiprocessing 模块实例详解
Jun 11 Python
Python面向对象基础入门之编码细节与注意事项
Dec 11 Python
python实现趣味图片字符化
Apr 30 Python
linux环境下Django的安装配置详解
Jul 22 Python
python 并发编程 多路复用IO模型详解
Aug 20 Python
python-序列解包(对可迭代元素的快速取值方法)
Aug 24 Python
pytorch实现对输入超过三通道的数据进行训练
Jan 15 Python
浅析matlab中imadjust函数
Feb 27 Python
Windows10+anacond+GPU+pytorch安装详细过程
Mar 24 Python
django为Form生成的label标签添加class方式
May 20 Python
python字典的元素访问实例详解
Jul 21 Python
python模板入门教程之flask Jinja
Apr 11 Python
Python缓存技术实现过程详解
Sep 25 #Python
Laravel框架表单验证格式化输出的方法
Sep 25 #Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
Sep 25 #Python
python 用户交互输入input的4种用法详解
Sep 24 #Python
python getpass实现密文实例详解
Sep 24 #Python
使用Python的turtle模块画国旗
Sep 24 #Python
给你一面国旗 教你用python画中国国旗
Sep 24 #Python
You might like
PHP实现提取一个图像文件并在浏览器上显示的代码
2012/10/06 PHP
php代码检查代理ip的有效性
2016/08/19 PHP
js中cookie的使用详细分析
2008/05/28 Javascript
基于jquery的inputlimiter 实现字数限制功能
2010/05/30 Javascript
我的javascript 函数链之演变
2011/04/07 Javascript
jquery 图片上传按比例预览插件集合
2011/05/28 Javascript
2014年最火的Node.JS后端框架推荐
2014/10/27 Javascript
JavaScript实现自动消除按钮功能的方法
2015/08/05 Javascript
JS实现可展开折叠层的鼠标拖曳效果
2015/10/09 Javascript
比较常见的javascript中定义函数的区别
2015/11/09 Javascript
jQuery+css实现的时钟效果(兼容各浏览器)
2016/01/27 Javascript
基于jquery实现百度新闻导航菜单滑动动画
2016/03/15 Javascript
Javascript实现图片加载从模糊到清晰显示的方法
2016/06/21 Javascript
JavaScript中自带的 reduce()方法使用示例详解
2016/08/10 Javascript
微信小程序 实例应用(记账)详解
2016/09/28 Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
2016/12/13 Javascript
利用node.js搭建简单web服务器的方法教程
2017/02/20 Javascript
Vue.js结合Ueditor富文本编辑器的实例代码
2017/07/11 Javascript
一秒学会微信小程序制作table表格
2019/02/14 Javascript
layui-table获得当前行的上/下一行数据的例子
2019/09/24 Javascript
[02:05]2014DOTA2国际邀请赛 BBC外卡赛赛后总结
2014/07/09 DOTA
Python中函数eval和ast.literal_eval的区别详解
2017/08/10 Python
python下实现二叉堆以及堆排序的示例
2017/09/29 Python
python logging日志模块的详解
2017/10/29 Python
python实现的分析并统计nginx日志数据功能示例
2019/12/21 Python
Python 使用threading+Queue实现线程池示例
2019/12/21 Python
Django单元测试中Fixtures用法详解
2020/02/25 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
2021/02/22 Python
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
意大利男装网店:Vrients
2019/05/02 全球购物
服装促销活动方案
2014/02/23 职场文书
社区工作者感言
2014/03/02 职场文书
校园安全标语
2014/06/07 职场文书
2014年小学生教师节演讲稿范文
2014/09/10 职场文书
小学英语听课心得体会
2016/01/14 职场文书