目录

[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模块提供了isfile和isdir方法用来检测路径是文件是图片,当然就有些复杂了。

包括pillow的使用和读取和处理xlrd的表格都是百度怎么用,现在当然不用百度了。

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

未完待续...

python学生档案管理系统_【校园杂工】Python脚本处理档案图片之1相关推荐

  1. 计算机毕业设计(附源码)python学生档案管理系统

    项目运行 环境配置: Pychram社区版+ python3.7.7 + Mysql5.7 + HBuilderX+list pip+Navicat11+Django+nodejs. 项目技术: dj ...

  2. python写超市管理系统_控制台超市系统(Python)

    #定义仓库 repos = dict() #定义购物清单对象 shop_list = [] #定义函数来初始化商品 def init_repository(): goods1 = ("100 ...

  3. python编写通讯录管理系统_一个简单的python程序实例(通讯录)

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  4. Python高校学生档案管理系统毕业设计源码071528

    Python高校学生档案管理系统 摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理.在现实运用中,应用软件的工作规则和开发 ...

  5. 《数据结构课程实践》_01_学生成绩档案管理系统_实现

    01_学生成绩档案管理系统_实现 一.实验题目 二.编程语言以及开发环境 三.源代码 1.学生类 2.自定义数据库类 3.数据操作类 4.总服务类 5. main类 四.运行结果 五.实验小结 一.实 ...

  6. 《数据结构课程实践》_01_学生成绩档案管理系统_准备工作

    01_学生成绩档案管理系统_准备工作 一.实验题目与要求 二.编程语言以及开发环境 三.实验思路 1. 思考初始化数据处理 2. 学生对象处理 3. 操作处理 4. 方法描述 四.预习小结 一.实验题 ...

  7. python综合管理系统代码_《python学生信息管理系统》[52KB]PDF代码版下载-码农之家...

    <python学生信息管理系统>是一本python相关的电子书资源,介绍了关于python.学生管理系统方面的内容,格式为PDF,资源大小52 KB,由26622451 提供,目前在&qu ...

  8. jsp mysql电子档案管理系统_学生档案管理系统的设计与实现(JSP,MySQL)(含录像)

    学生档案管理系统的设计与实现(,MySQL)(含录像)(开题报告,毕业论文12100字,程序代码,MySQL数据库,答辩PPT) 本文主要工作内容是梳理学生档案管理系统工作的流程,吸收.借鉴先进的指导 ...

  9. java 档案管理系统论文_基于JAVA学生档案管理系统论文.doc

    学生档案管理系统 PAGE II 学生档案管理系统 摘 要 学生档案管理系统是一个教育单位不可缺少的部分,它能够为用户提供充足的信息和快捷的查询手段.随着计算机技术的发展,其强大的功能已为人们深刻认识 ...

最新文章

  1. 2021算法竞赛入门班第十节课【字符串】练习题
  2. MVC之ActionFilterAttribute自定义属性
  3. 利用 Python 写个七夕表白神器
  4. Linux系统超全超实惠的命令行工具
  5. 《System语言详解》——3. SystemTap脚本的各大组件
  6. 如何理解IPD+CMMI+Scrum一体化研发管理解决方案之IPD?
  7. 玩客部落ASO解读:应用商店关键词曝光原理
  8. sfc/Windows 资源保护找到了损坏文件但无法修复
  9. 网络营销和电子商务傻傻分不清?
  10. 论文笔记——使用信息熵对复杂网络中节点进行影响力排名
  11. word文档保存文件时出错_保存时如何自动创建Word文档的备份副本
  12. 揭秘:全球SaaS行业估值第三的巨头ServiceNow是如何计算流失率的?
  13. 从项目的一个 panic 说起:Go 中 Sync 包的分析应用
  14. 彻底解决CUDA安装,从翻译文档开始_Compiling CUDA Programs
  15. chan相关的知识点
  16. win7无法看到工作组计算机,Win7系统无法查看工作组问题的解决方法
  17. 【spark基础】之client模式下--conf读取外部文件
  18. 三大运营商物联卡哪家网络稳定
  19. Foldor for Mac(文件夹图标样式修改工具)
  20. react antv实现图片上传预览

热门文章

  1. 狂神说JavaWeb笔记(超级详细)
  2. 算法实践:农夫和牛 (二分)
  3. 数据库中表的常见七大约束
  4. EF框架-SQL语句 增加 删除
  5. man DMIDECODE
  6. [CTFTraining] ASIS CTF 2019 Quals Unicorn shop
  7. 东北大学计算机英语复试,东北大学计算机考研复试英语口语常见问题.doc
  8. 没有学好 飞鸽传书2007
  9. jml java msn_JML 简单的MSN 机器人
  10. 计算机ppt怎么播放,怎么让PPT放映期间播放歌曲?