手机使用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 相关文章推荐
python创建和使用字典实例详解
Nov 01 Python
Python中多线程及程序锁浅析
Jan 21 Python
python编写的最短路径算法
Mar 25 Python
python处理图片之PIL模块简单使用方法
May 11 Python
Go语言基于Socket编写服务器端与客户端通信的实例
Feb 19 Python
python面向对象_详谈类的继承与方法的重载
Jun 07 Python
python函数中return后的语句一定不会执行吗?
Jul 06 Python
对python的unittest架构公共参数token提取方法详解
Dec 17 Python
pymysql的简单封装代码实例
Jan 08 Python
Python使用Excel将数据写入多个sheet
May 16 Python
使用Python-OpenCV消除图像中孤立的小区域操作
Jul 05 Python
python套接字socket通信
Apr 01 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
星际争霸秘籍
2020/03/04 星际争霸
PHP与MySQL开发的8个技巧小结
2010/12/17 PHP
PHP内核探索:变量概述
2014/01/30 PHP
一个简单的PHP验证码实现代码
2014/05/10 PHP
(function(){})()的用法与优点
2007/03/11 Javascript
异步加载script的代码
2011/01/12 Javascript
imgAreaSelect 中文文档帮助说明
2011/10/08 Javascript
JavaScript包装对象使用介绍
2013/08/29 Javascript
JavaScript事件委托的技术原理探讨示例
2014/04/17 Javascript
jquery比较简洁的软键盘特效实现方法
2015/03/19 Javascript
javascript检测两个数组是否相似
2015/05/19 Javascript
jQuery实现平滑滚动页面到指定锚点链接的方法
2015/07/15 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
Jquery调用iframe父页面中的元素及方法
2016/08/23 Javascript
vue 计算属性和侦听器的使用小结
2021/01/25 Vue.js
[03:00]DOTA2-DPC中国联赛1月18日Recap集锦
2021/03/11 DOTA
python通过pil模块获得图片exif信息的方法
2015/03/16 Python
详解Python网络爬虫功能的基本写法
2016/01/28 Python
Python3 合并二叉树的实现
2019/09/30 Python
Python利用PyExecJS库执行JS函数的案例分析
2019/12/18 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
一句话工作感言
2014/03/01 职场文书
高考寄语大全
2014/04/08 职场文书
电工技术比武方案
2014/05/11 职场文书
道德大讲堂实施方案
2014/05/14 职场文书
大跃进口号
2014/06/16 职场文书
校庆标语集锦
2014/06/25 职场文书
2014初中数学教研组工作总结
2014/12/19 职场文书
三方协议书
2015/01/27 职场文书
刑事上诉状(无罪)
2015/05/23 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书
python 实现德洛内三角剖分的操作
2021/04/22 Python
python 如何在list中找Topk的数值和索引
2021/05/20 Python
Go timer如何调度
2021/06/09 Golang
node.js使用express-fileupload中间件实现文件上传
2021/07/16 Javascript
React Fragment介绍与使用详解
2021/11/11 Javascript