【校园杂工】Python脚本处理档案图片之1

目录

[TOC]

我大一刚入校的时候,我那高度近视的牛姓学长就告诉我,你咋恁想不开呢,报这个专业,赶紧想办法转专业吧,咱们专业到学校就是打杂的,当时还挺不服气的,后来果然把自己混成了一个干杂活的,人称校园杂工。猫有猫路,蛇有蛇道,在杂工生涯中,还是有几件颇为自得的事情,其一就是用Python帮助同事提高工作效率了。
本文阅读时间10分钟,照着做出来最多15分钟,大家空闲时间就可以完成了。

需求

Excel文档

作为教育技术专业的学生,所学甚为芜杂,从教育理论到网站开发,从彩色电视机维修到摄录编,从美术原理到三维软件(第个菜单的第二个子菜单点一下选第三项),学的挺多的,啊扯远了,反正当初在学校也拍了很多抓不住重点的新闻照片,大家知道学校的大小照片都是要拍照挂网推文留档的,而且大概16年的时候,青岛市档案工作要求把所有的图片按照上图所示的格式保存,并且导入到档案管理系统。

原始照片的文件名大概是题名一列的样子,其他具体要求是:

  • 当年所有的照片都要有一个档号,按照顺序排列
  • 所有照片都要有一个小的缩略图,文件名是档号
  • 然后还要有归档日期光盘号之类的
    • 要计算每张光盘存放多少照片
    • 自动更新光盘号
  • 处理xls文档,最后选择xlrd模块

其实大部分要求都挺简单的,但是每张图片生成缩略图并且按照档号排列,这个工作真的是会把人逼疯的,估计负责档案的老师也是苦不堪言,受不了了,向领导求助(这比大包大揽最后搞砸好多了),然后就轮到我小孟尝哦不是小郎出场了,谁让我平时吹牛自己编程厉害呢。

当时已经自学过一段时间的Python了,正好拿来练手。

任务分解

简要分析

凡事超过3遍,就一定可以通过编程来解决,当然这句话很绝对,不过如果你讨厌重复的工作,有意识的通过编程来避免重复性的工作是非常重要的。

其实这个脚本并不难写,主要就是遍历文件,然后裁剪图片,把裁剪后的图片保存到新的文件夹,然后把数据写到xls就号了,档号和缩略图是最复杂的部分,表中其他的数据用excel自身的填充功能都可以很方便的完成。

麻烦的是拍照日期,一是题名中的文件日期其实不是很准确的,因为学校里用来存档的照片都是数码相机拍摄的照片,所以照片的EXIF信息是完整的(专业课《多媒体原理》中的内容),所以想到可以直接从EXIF信息中提取拍摄日期,当时其实没有做的太复杂直接读出来了事了,现在看来其实也可能有的图片EXIF信息是不准确的,需要跟题名的日期比对,当然程序会复杂一点,现在是写基本教程嘛,写意为主,有个大概差不多了,感兴趣的老师自然会深入去研究的。

可交换图像文件格式(英语:Exchangeable image file format,官方简称Exif),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。
Exif信息是可以被任意编辑的,因此只有参考的功能。

图片处理

图片裁剪

至于裁剪图片,学习廖雪峰的Python课程的时候,知道Pillow(PIL)库可以用来在windows系统下处理图片,功能很强大,安装也很简单,只需要在命令行输入:

pip install pillow

读取EXIF信息

通过认真翻阅pillow的文档https://pillow.readthedocs.io/en/stable/,得知pillow可以方便的处理图片的元数据EXIF信息,欧耶。

处理excel文件

处理excel文件当时使用了比较简单的xlwd库,专门用来写xls文件的库。

程序实现

遍历文件

遍历所有照片

Python提供了用来操作文件系统的标准库os模块,于是翻阅os模块的文档,看到方法挺多的,其中有一个很重要的方法就是listdir方法,用来打印出某个文件夹下面所有的子文件夹和文件,当然也有文件可以查看当前文件夹了。



在这里我重新搞了一个图片文件夹,用来演示处理档案。这些单反都是用数码相机拍摄的,EXIF信息是非常完整的。
在IDLE新建一个文件,命名为main.py,保存到docs文件夹:
docs文件夹下的文件

此时的目录结构如下:
tree命令显示目录结构

要遍历所有文件,要用到os模块的listdir方法,我们看下:

os.listdir方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。

只支持在 Unix, Windows 下使用。
在IDLE中输入以下代码:

import os

# 如果不给lisdir提供参数
# 默认输出当前文件夹所有
# 文件和文件夹
files = os.listdir()
print(files)

运行程序,输出结果如下:

====================== RESTART: D:\coding\docs\main.py ======================
['images', 'main.py']
>>> 

可以看到listdir方法返回了docs文件夹下所有的文件,包括子文件夹和文件,并保存在一个列表files变量之中。
但是我们需要处理的是images文件夹中的文件,所以,我们给listdir方法提供一个参数,表示路径,用于显示特定路径下的文件:

import os

# 如果不给lisdir提供参数
# 默认输出当前文件夹所有
# 文件和文件夹
files = os.listdir("images")
print(files)

运行代码输出如下:


images文件夹下的文件

与文件夹的截图是对应的


文件夹截图

当然,我最初写这个程序的时候,对于Python还不怎么熟悉,基本上所有的代码都是百度得来的,然后把程序拼凑起来能用罢了,而且当时所有的图片都是在同一个文件夹,不需要考虑listdir方法返回的是图片文件名还是子文件夹名称的问题。
Python内置库os中的path模块提供了isfileisdir方法用来检测路径是文件是图片,当然就有些复杂了。
包括pillow的使用和读取和处理xlrd的表格都是百度怎么用,现在当然不用百度了。

下一篇讲解如何用pillow处理图片,包括打开,获得缩略图并保存

未完待续...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容

  • 前言 Python的创始人为Guido van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido为了打...
    依依玖玥阅读 3,567评论 6 37
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,744评论 0 10
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,094评论 4 62
  • 作为儿媳妇,要做一个聪明的儿媳妇,正确处理好婆媳关系,是家庭和睦的关键。 那么,婆婆和媳妇之间怎么相处最融洽呢?其...
    宝妈土豆阅读 389评论 0 0
  • 这几天下雨 身体不适 接二连三的加班 因为马上国庆节的缘故 你这样不会猝死吧? 我觉得会 好吧 我得小心了 不再熬...
    JENY_f22c阅读 95评论 0 1