手机使用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 从远程服务器下载日志文件的程序
Feb 10 Python
详解JavaScript编程中的window与window.screen对象
Oct 26 Python
详解python如何在django中为用户模型添加自定义权限
Oct 15 Python
python mac下安装虚拟环境的图文教程
Apr 12 Python
Python实现堡垒机模式下远程命令执行操作示例
May 09 Python
Django如何自定义model创建数据库索引的顺序
Jun 20 Python
python中for循环把字符串或者字典添加到列表的方法
Jul 20 Python
python实现简易学生信息管理系统
Apr 05 Python
python 基于dlib库的人脸检测的实现
Nov 08 Python
python编程进阶之异常处理用法实例分析
Feb 21 Python
python3 配置logging日志类的操作
Apr 08 Python
基于python实现地址和经纬度转换
May 19 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使用GD实现颜色渐变实例
2015/06/02 PHP
php用户登录之cookie信息安全分析
2016/05/13 PHP
基于php中echo用逗号和用点号的区别详解
2018/01/23 PHP
tp5实现微信小程序多图片上传到服务器功能
2018/07/16 PHP
jquery.blockUI.js上传滚动等待效果实现思路及代码
2013/03/18 Javascript
JavaScript获取图片的原始尺寸以宽度为例
2014/05/04 Javascript
JavaScript实现班级随机点名小应用需求的具体分析
2014/05/12 Javascript
无刷新上传文件并返回自定义值
2015/06/11 Javascript
深入浅析同源策略和跨域访问
2015/11/26 Javascript
通过点击jqgrid表格弹出需要的表格数据
2015/12/02 Javascript
轻松实现Bootstrap图片轮播
2020/04/20 Javascript
JavaScript重定向URL参数的两种方法小结
2016/10/19 Javascript
Vue项目中quill-editor带样式编辑器的使用方法
2017/08/08 Javascript
JS一个简单的注册页面实例
2017/09/05 Javascript
Handtrack.js库实现实时监测手部运动(推荐)
2021/02/08 Javascript
[02:20]DOTA2英雄基础教程 黑暗贤者
2013/12/19 DOTA
[55:03]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.20
2020/11/20 DOTA
[38:27]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第二场 11.26
2020/11/30 DOTA
python开发中range()函数用法实例分析
2015/11/12 Python
Php多进程实现代码
2018/05/07 Python
Python中的Django基本命令实例详解
2018/07/15 Python
纯用NumPy实现神经网络的示例代码
2018/10/24 Python
Matplotlib中文乱码的3种解决方案
2018/11/15 Python
Python利用matplotlib做图中图及次坐标轴的实例
2019/07/08 Python
python+tkinter实现学生管理系统
2019/08/20 Python
pycharm的python_stubs问题
2020/04/08 Python
打印tensorflow恢复模型中所有变量与操作节点方式
2020/05/26 Python
详解CSS透明opacity和IE各版本透明度滤镜filter的最准确用法
2016/12/20 HTML / CSS
Zavvi荷兰:英国大型音像制品和图书游戏零售商
2018/03/22 全球购物
外贸业务员工作职责
2014/01/06 职场文书
优秀班主任工作总结2015
2015/05/25 职场文书
土木工程生产实习心得体会
2016/01/22 职场文书
年终奖金发放管理制度,中小企业适用,拿去救急吧!
2019/07/12 职场文书
php将xml转化对象的实例详解
2021/11/17 PHP
Flutter集成高德地图并添加自定义Maker的实践
2022/04/07 Java/Android
html,css,javascript是怎样变成页面的
2023/05/07 HTML / CSS