APP下载

浅谈Python 在日常工作中的应用

2020-01-01周佳周志辉

中国设备工程 2019年23期
关键词:编程语言备份报价

周佳,周志辉

(上汽通用汽车有限公司,上海 201206)

Python 是荷兰人Guido van Rossum 在1989 年圣诞节期间编写的一种编程语言。现在,全世界差不多有600 多种编程语言,但流行的编程语言也只有十几种。下面的图1 列表基于源自TIOBE 编程社区指数的数据,该指数是表明近两年中编程语言受欢迎程度的常用指标:

图1 2019 年和2018 年编程语言占有率排名

过去15 年来,Python 的受欢迎程度稳步上升。过去这几年,它一直能够跻身TIOBE 指数前5 名的位置。作为如今人工智能、机器学习、大数据和机器人等一些最有前途的技术背后的主要语言,Python 近年来积累了庞大的粉丝群。你会惊讶地发现,学习Python 很容易,这就是为什么不论初出茅庐的新手程序员还是经验丰富的开发人员选择Python作为第二或第三语言的原因。

“Python 的语法是非常精简的,对于一位完美主义者来说,Python 将是他爱不释手的伙伴。Python 社区的目标就是构造完美的Python 语言!本文将使用Python3 来进行讲解。”

1 Python 简介

当用一种编程语言开始真正的解决工作中的问题时,除了编写代码外,还需要很多基本的已经写好的现成的东西,来协助加快开发进度。比如,要编写一个电子邮件客户端,如果先从最底层开始编写网络协议相关的代码,那估计一年半载也开发不出来。高级编程语言通常都会提供一个比较完善的基础代码库,可以直接调用,比如,针对电子邮件协议的SMTP 库,针对桌面环境的GUI 库,在这些已有的代码库的基础上开发,一个电子邮件客户端几天就能开发出来。

Python 就为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作“内置电池(batteries included)”。用Python 开发,许多功能不必从零编写,直接使用现成的即可。除了内置的库外,Python 还有大量的第三方库,也就是别人开发的,供你直接使用的东西。当然,如果你开发的代码通过很好的封装,也可以作为第三方库给别人使用。

许多大型网站就是用Python 开发的,例如YouTube、Instagram,还有国内的豆瓣。很多大公司,包括Google、Yahoo 等,甚至NASA(美国航空航天局)都大量地使用Python。Python 的定位是“优雅”“明确”“简单”,所以Python 程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常复杂的程序。

2 用Python 实现机器人自动报价

2.1 输入模板和输出结果

以此案例介绍Python 如何处理Excel 文件标准格式产品配置报价,当然Excel 自定义宏也可以实现部分类似功能,只不过在这个案例中我们用Python 程序显得更简单、效率更高,且具有可复制性、可扩展性。

图2 机器人报价清单

图2 所示为需要处理的机器人配置表格,经过Python程序处理自动输出的报价表(价格已经过脱敏处理)。以往200 台工业机器人选型配置往往需要耗费大量的人工工时来分类筛选并填写价格,用时1 ~3 小时不等,但Python 从输入模板到输出结果,总共时间不超过5s,大大缩短了报价所需的时间,同时避免了人为操作失误。

2.2 第三方库Openpyxl

这里用到一个Python 第三方库Openpyxl,我们简单介绍一下,Openpyxl 诞生源于现有的库,用于读取/写入Excel 2010 XLSX/XLSM/XLTX/XLTM 文件。

2.3 程序的编写思路

程序的思路和代码的顺序并没有直接的关联,以下我们主要讲解自动报价程序的实现思路:

首先,机器人采购配置清单是一个标准的Excel 文件模板,机器人报价清单则是另一个标准的Excel 文件模板,所以需要先将机器人采购配置清单中和价格有关的配置选项拷贝至机器人报价清单。

其次,定义每种配置数据对应的价格,加上判断的逻辑,利用for…in…语句逐行判断并填写相应的价格数值到对应的列表单元,随后保存新文件。

最后,需要检查并调试程序BUG,完成封装后可共享给他人使用。

3 用Python 实现机器人批量自动备份

3.1 输入模板和输出结果

用此案例来介绍Python 如何批量下载程序,当然市面上不乏有这样的软件,但是这些软件不仅需要开发时间及费用,还需要不同岗位的专家大量测试配合。作为业余的程序员,完全可以一个人运用Python 来实现此项功能。

图3 所示为Python 程序运行后自动输出的备份文件。以往的普通备份操作需要花大量的人工和时间,而使用此Python 程序自动运行2 分钟即可,完成1 台机器人程序备份。

图3 机器人备份文件

3.2 第三方库

这里先介绍一下代码中使用到的第三方库。第一个是ftplib,它是 Python 的内置的一个标准模块,它提供了对FTP 服务端的操作功能,通过它我们可以连接并操作FTP 服务端。第二个是socket,用来设置IP 地址访问超时等待时间。第三个是os,它也是Python 的内置的一个标准模块,可以用来处理windows 系统操作,如创建文件夹、删除文件等。最后是Openpyxl,上一节中也使用过,用于读取/写入Excel 文件。

3.3 程序的编写思路

程序的思路和代码的执行顺序并没有直接的联系,以下我们主要讲解自动备份程序的实现思路:

首先,我们需要插入将要用到的所有第三方库os、ftplib、socket、openpyxl,并创建一个下载文件的总文件夹。

其次,check_Excel_sheet()函数用来读取输入模板中的sheet,get_IP()函数用来读取输入模板中的sheet 中的IP 地址,并且初步筛选出填写格式正确的IP 地址,错误的IP 地址则会在后一列填写报错代码以示区别,openpyxl 具体使用方法请参考官方说明手册。

最后,load_files(each_IP)函数中会逐个连接之前读取到的IP 地址,根据IP 地址创建子文件夹并且批量下载文件。

最终主程序把各个自定义函数串联起来,并做了防错/跳过程序处理,防止程序卡死,至此即完成任务。主程序结构代码如下:

if __name__ == ‘__main__’:

check_ID()

check_Excel_sheet()

step0 = get_IP()

print(step0)

for each_IP in step0:

print(each_IP,’备份ing...’)

try:

load_files(each_IP)

print(each_IP,’备份下载成功’)

except:

print(each_IP,’备份下载失败或下载文件不全,请检查网络’)

#test = input(‘下载失败是否继续下一个Y/N:’)

message_f = r’D:/robot_backup’ + ‘/IP’ + each_IP + ‘备份下载失败或下载文件不全’

os.mkdir(message_f)

end = input(‘是否结束程序Y/N:’)

4 Python 的编程思路和应用启发

4.1 Python 的编程思路

完成相同的一个任务,使用汇编语言需要1000 行代码,使用C 语言需要500 行代码,使用Java 只需要100 行,而使用Python,可能只需要20 行就可以了。这就是Python,即使你没有任何编程基础,仍然可以很快上手并且利用它提高自己的工作效率。其主要的使用思路可以大致分为四步。第一步,思考工作中计算机使用时的痛点,难点或重复劳动的繁重内容,思考如何使用Python 解决问题或提升效率。第二步,要相信方法总比问题多,一步登天对大多数人而言毕竟难度较大,所以把大问题拆分成分散的小问题,逐个击破,最后一气呵成攻下难关。第三步,学会利用网络上的各种共享资源,不断学习,也许你思考的问题前人已有总结并分享,这样就可以大大节约你的编程时间,有些第三方库并不需要学很深,只需要了解能帮助你解决问题的功能或模块即可。第四步,在测试程序的过程中发现问题,及时修正程序并添加注解,不断完善,避免3 个月后再回来看程序时一脸茫然。

做好以上四步,对于初学者来说,足以开发一些小程序解决部分工作上的问题。

4.2 Python 的应用启发

本文是在汽车行业中机器人工程师的角度思考并编程解决问题。其实Python 能应用的场景远不止于此,以下是关于Python 在各行各业(非计算机专业)中应用的一些构想。

设备工程师:利用Python 监控、抓取设备关键参数,按照特定的算法、权重做可视化分析故障率,提前预知设备停机风险。

网络编辑:利用Python 检索网络大数据,筛选关键字,精致定位相关文章,批量下载图片。

培训师:利用Python 科学库把数据生成智能分析图,提高说服力。

5 结语

“操作文本或者数据是件大事。如果不相信,就仔细看看当今的计算机都在做些什么工作:文字处理、网页表单的填写、来自数据库转储的信息流、股票报价信息、新闻源,而且这个清单还会不断增长”。本文基于Python3 软件,介绍了Python 及其各种第三方库在汽车行业机器人工程师手中的实际应用案例。希望通过Python 各种成熟的库及精简的语句,为提升工作效率、解决工作中碰到的难点、痛点提供更多高效、简便的途径。

猜你喜欢

编程语言备份报价
浅谈数字化条件下的数据备份管理
基于JavaScript编程语言之 闭包技术在焦点轮播上的应用
创建vSphere 备份任务
计算机软件开发的JAVA编程语言及其实际应用分析
Windows10应用信息备份与恢复
浅谈不同编程语言对计算机软件开发的影响
高职计算机编程语言课程教学方法的相关分析
旧瓶装新酒天宫二号从备份变实验室
报价