前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

作者: A字头

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef

有些朋友在工作中会有这样的困惑:明明我从早忙到晚,为什么得到的评价还不高?

要知道,企业对一个员工的评价是出于“产出”而非“付出”。所以,如果把大量时间花在机械重复的工作上,不但工作效率不高,对个人发展来说也无甚帮助。

而这些工作,如果对于会点编程的人来说,往往通过几行代码就可以快速搞定了。

于是,我去了解了一下身边不同岗位(HR、产品、运营、市场、数据分析师等)每天需要面对的重复性劳动(肯定会有不全,欢迎补充~),总结了一些在工作中非常常见的例子,并且将源码整理好供参考。希望这些程序可以让你的工作更高效!(升职加薪了别忘了回来发红包哦~)

那么如何将这些统统实现呢?

我将这些分为以下几类,大家可以自行评估,各取所需:

系统录入自动化

由于你经常需要不断的将一些信息录入系统,每一次录入的过程中你可能需要不断的点击一些按钮,面对这种情况,完全可以写一个自动脚本,每次代替你来执行这些点击的行为。

这里写了一个自动登录邮箱的脚本,可以实现文本输入和网页点击:

 import time
from splinter import Browser

def splinter(url):
browser = Browser()
#login 126 email websize
browser.visit(url)
#wait web element loading
time.sleep(5)
#fill in account and password
browser.find_by_id('idInput').fill('xxxxxx')
browser.find_by_id('pwdInput').fill('xxxxx')
#click the button of login
browser.find_by_id('loginBtn').click()
time.sleep(8)
#close the window of brower
browser.quit()

if __name__ == '__main__':
websize = 'https://mail.163.com/'
splinter(websize)

同理可以写一个简单的游戏挂机脚本,游戏挂机脚本,无非就是自动移动鼠标,自动点击,进行重复操作,所以,第一步就是如何控制鼠标。

 import win32api
import time
def move_click(x, y, t=0): # 移动鼠标并点击左键
win32api.SetCursorPos((x, y)) # 设置鼠标位置(x, y)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN |
win32con.MOUSEEVENTF_LEFTUP, x, y, 0, 0) # 点击鼠标左键
if t == 0:
time.sleep(random.random()*2+1) # sleep一下
else:
time.sleep(t)
return 0
# 测试
move_click(30, 30)

def resolution(): # 获取屏幕分辨率
return win32api.GetSystemMetrics(0), win32api.GetSystemMetrics(1)

值得注意的是,一定要在管理员权限下的cmd中运行,否则点击无效。

这个时候,你已经可以写个循环,不停地点击屏幕上不同的几个点,最基础的挂机脚本就实现了。

Excel自动化处理

Excel合并

在实际应用中可能会有不同月份的数据或者不同周的报告等等的Excel数据,都是单个独立的文件,如果想要整体使用的话就需要合并一下,那么如何利用python把指定目录下的所有Excel数据合并成一个文件呢?

思路:利用python xlrd包读取excle文件,然后将文件内容存入一个列表中,再利用xlsxwriter将内容写入到一个新的excel文件中。

 # -*- coding: utf-8 -*-

#将多个Excel文件合并成一个
import xlrd
import xlsxwriter

#获取excel中所有的sheet表
def getsheet(fh):
return fh.sheets()

#获取sheet表的行数
def getnrows(fh,sheet):
table=fh.sheets()[sheet]
return table.nrows

#读取文件内容并返回行内容
def getFilect(file,shnum):
fh=open_xls(file)
table=fh.sheets()[shnum]
num=table.nrows
for row in range(num):
rdata=table.row_values(row)
datavalue.append(rdata)
return datavalue

或者直接用concat+一个循环来实现:

 for i in var_list:
df_0 = data[['var_1','var_2','var_3','var_4',i]][data[i]=='信息']
df_0['month'] = date_replace(i)
df_0 = df_0[['var_1','var_2','var_3','var_4','var_5']]
li.append(df_0)

writer = pd.ExcelWriter(r'C:\Users\mapping.xlsx')
df = pd.concat(li)
df.to_excel(writer,'Sheet1',index=False,header = None)

Excel中添加数据图表

整理好excel文件后下一步需要做的是处理文件里的数据,根据数据来生成一些自己需要的图表:

 import xlsxwriter

#设置一个例子
data = [20, 45, 26, 18, 45]

#创建表格
workbook = xlsxwriter.Workbook("temp.xlsx")
worksheet = workbook.add_worksheet("data")

#添加数据
worksheet.write_column('A1', data)

#创建图表
chart = workbook.add_chart({'type': 'line'})

#图表添加数据
chart.add_series({
'values': '=data!$A1:$A6',
'name': '图表名称',
'marker': {
'type': 'circle',
'size': 8,
'border': {'color': 'black'},
'fill': {'color': 'red'}
} ,
'data_labels': {'values': True},
'trendline': {
'type': 'polynomial',
'order': 2,
'name': '趋势线',
'forward': 0.5,
'backward': 0.5,
'display_equation':True,
'line': {'color': 'red', 'width':1, 'dash_type': 'long_dash'}
}
})

worksheet.insert_chart('c1', chart)
workbook.close()

实现效果:

这部分图文来自网络,侵删。

word关键信息提取

假设你收到1万份简历,你想先根据学校做一些筛选,这时候利用python将大量的简历进行信息汇总,只提取关键信息用excel查看起来更加方便。

docx文件自己本身是压缩文件,打开压缩包之后竟然发现里面有个专门存储word里面文本的文件。 那么步骤就变得简单了:

  1. 打开docx的压缩包

  2. 获取word里面的正文信息

  3. 利用正则表达式匹配出我们想要的信息

  4. 将信息存储到txt中(txt可以用excel打开)

  5. 批量调用上述过程,完成一万份简历的提取工作

利用正则匹配获取关键信息:

 import re
def get_field_value(text):
value_list = []
m = re.findall(r"姓 名(.*?)性 别", table)
value_list.append(m)
m = re.findall(r"性 别(.*?)学 历", table)
value_list.append(m)
m = re.findall(r"民 族(.*?)健康状况", table)
value_list.append(m)
'''
此处省略其他字段匹配
'''
return value_list

自动化运营监控

在平时的工作中,一定会有对运营情况的监控,假设你管理一家店铺,那么一些关键指标肯定是你需要每天查看到的,比如店铺访问数,商品浏览数,下单数等等,这个时候不用每天重复地去统计这些数据,这需要写一个自动化程序,每天将数据保存在固定的文件夹下就可以实现报表的实时监控。

如果你的数据来源是线下文件:

  • 利用python操作线下文件将其载入数据库

  • 通过数据库对数据进行处理

  • 利用python输出结果

 from impala.dbapi import connect
from impala.util import as_pandas
import datetime

conn = connect(host='host',port=21050,auth_mechanism='PLAIN',user='user',password='password')
#host:数据库域名
#user:数据库用户名
#password:数据库密码
df_data = pd.read_excel('temp.xlsx')

rows =[]
for index, row in df_data.iterrows():
rows.append('('+'"'+str(row['case_id']).replace('nan','null')+'"'+','+'"'+str(row['birth_date'])+'"'+')'+',')
a= '''
INSERT into table
(case_id, birth_date)
values '''
for i in rows:
a += i
a = a[:-1]

cursor1 = conn.cursor()
cursor1.execute(a)
cursor1.close()
conn.close()
print('成功导入数据至数据库...')
del a
del rows

如果你的数据来源是线上文件(存在数据库)

  • 直接利用python链接数据库进行一些列的操作

  • 导出你所需要的结果

 import sql   #sql是封装的sql文件
sql_end = sql.sql_end
cursor1 = conn.cursor()
for i in sql_end.split(';'):
print(i)
cursor1.execute(i)
cursor1.close()
conn.close()
print('程序运行结束,请执行下一步。')

自动发送邮件

使用Python实现自动化邮件发送,可以让你摆脱繁琐的重复性业务,节省非常多的时间。

数据分析师经常会遇到一些取数需求,有些数据需求是每天都需要的,有些数据需求是每周一次的。对于这些周期性的数据需求,每次都重复性地手动导出这些数据,并回传给需求方,是很繁琐且浪费时间的。所以完全可以设置自动邮件来解决。

"Talk is cheap, show you the code" 常见的邮件肯定有三部分: 1、正文 2、图片 3、附件 OK 导入我们需要用到的包

 from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
import smtplib msg = MIMEMultipart()

在邮件中插入正文:

 ##在邮件中插入文本信息
df_text='''<html>
<body>
<p> Hi all ,</p>
<p> 这是一个测试邮件,详情请参考附件 </p>
<p> 情况如下图: </p>
</body></html>'''
msgtext = MIMEText(df_text, 'html', 'utf-8')
msg.attach(msgtext)

如果你需要插入图片,利用同样的方法,在邮件中插入图片:

 ##在邮件中插入图片信息
image = open('temp.jpg','rb')
msgimage = MIMEImage(image.read())
msg.attach(msgimage)

在邮件中插入附件:

 ##在邮件添加附件
msgfile = MIMEText(open('temp.xlsx', 'rb').read(), 'base64', 'utf-8')
msgfile["Content-Disposition"] = 'attachment; filename="temp.xlsx"'
msg.attach(msgfile)

剩下的就是设置一些邮件参数来发送邮件:

 #设置邮件信息常量
email_host= '' # 服务器地址
sender = '' # 发件人
password ='' # 密码,如果是授权码就填授权码
receiver = '' # 收件人

发送邮件:

 try:
smtp = smtplib.SMTP(host=email_host)
smtp.connect(email_host)
smtp.starttls()
smtp.login(sender, password)
smtp.sendmail(sender, receiver.split(',') , msg.as_string())
smtp.quit()
print('发送成功')
except Exception:
print('发送失败')

然后将你的任务设置定时执行就可以轻松实现啦

实现效果:

平时的工作中,真的有太多可以去自动化的任务,由于经验受限这里不能一一举例说明,只能尽量分享一些我遇到过或者听说过的例子。

希望大家都越来越高效,边偷懒边完成工作~

简洁优雅的Python教你如何在工作中“偷懒”的更多相关文章

  1. 教你如何在工作中“偷懒”,python优雅的帮你解决

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取htt ...

  2. Java8之——简洁优雅的Lambda表达式

    Java8发布之后,Lambda表达式,Stream等等之类的字眼边慢慢出现在我们字眼.就像是Java7出现了之后,大家看到了“钻石语法”,看到了try-with-resource等等.面对这些新东西 ...

  3. Async:简洁优雅的异步之道

    前言 在异步处理方案中,目前最为简洁优雅的便是 async函数(以下简称A函数).经过必要的分块包装后,A函数能使多个相关的异步操作如同同步操作一样聚合起来,使其相互间的关系更为清晰.过程更为简洁.调 ...

  4. 推荐一个简洁优雅的博客系统,farbox

    这是我用farbox搞的一个博客:http://www.jsnull.com/ 特点: 1.无数据库,数据存在dropbox里,需要自己注册一个dropbox帐号 2.静态文本文件即是文章,可以在任何 ...

  5. Revealjs网页版PPT让你复制粘贴另类装逼,简洁优雅又低调,不懂编程也看过来

    Revealjs网页版PPT让你复制粘贴另类装逼,简洁优雅又低调,不懂编程也看过来 要了解一个新知识我们可以从三个方面入手:是什么,有什么用,怎么用.下面我们就从这三个方面进行讲解Reveal.js噢 ...

  6. python利用or在列表解析中调用多个函数.py

    python利用or在列表解析中调用多个函数.py """ python利用or在列表解析中调用多个函数.py 2016年3月15日 05:08:42 codegay & ...

  7. Python初学者笔记(3):输出列表中的奇数/奇数项,字符串中的偶数项,字符串大小写转换

    [1]a=[8,13,11,6,26,19,24]1)请输出列表a中的奇数项2)请输出列表a中的奇数 解:1) a=[8,13,11,6,26,19,24] print a[::2] Result:& ...

  8. 一步步教你读懂NET中IL(附带图)

    一步步教你读懂NET中IL(附带图) 接触NET也有1年左右的时间了,NET的内部实现对我产生了很大的吸引力,在msdn上找到一篇关于NET的IL代码的图解说明,写的挺不错的.个人觉得:能对这些底部的 ...

  9. Python程序员去上海工作有多难?

    我只能说,也要看你掌握的技术可以打多少分.技术熟练度跟找工作的难易程度是成正比的:你掌握得越好,找工作就越容易(难度系数越低):反之越高. Python程序员这种技术类的工作岗位,当然还是要有扎实的技 ...

随机推荐

  1. Thinkphp5.1 导入第三方包的问题

    一般刚接触tp5.1的,会很不适应,虽然版本号只是比5.0多了0.1,但是差别挺大,废弃了不少方法,官方的教程又很简单,很多东西没说全,在此鄙视一下框架作者,最起码体谅一下小白嘛,搞了好多天才把5.1 ...

  2. elementUI最新版的el-select使用filterable无效无法匹配正确搜索结果的Bug解决办法

    Bug描述: 今天做开发时遇到一个elementUI存在的bug. 当el-select使用filterable功能搜索时,如果你恰巧使用的是微软拼音输入法,那么你有可能会遇到搜索结果和输入的值不匹配 ...

  3. go实践之swagger自动生成api文档

    文章目录 go实践之swagger自动生成api文档 1.安装需要用到的包 2.接口代码支持swagger 3. 生成swagger接口 go实践之swagger自动生成api文档 作为一个后端开发, ...

  4. linux终端界面的字颜色设置

    目录 目录 说明 PS1 颜色语法 保存设置 说明 在网上找了好多资料都不是很详细,要不就是语法有错误. 所以弄了好久才整明白了,写下来方便后面的人学习. 本人linux虚拟机版本为CentOs 6. ...

  5. 2017 CCPC秦皇岛 L题 One Dimensions Dave

    BaoBao is trapped in a one-dimensional maze consisting of  grids arranged in a row! The grids are nu ...

  6. 模拟摄像头解码模块最新测试 TVP5150模块 FPGA+SDRAM+TVP5150+VGA 实现PAL AV输入 VGA视频输出

    模拟摄像头解码模块最新测试  TVP5150模块  FPGA+SDRAM+TVP5150+VGA  实现PAL AV输入 VGA视频输出 测试使用电视机顶盒的AV模拟信号输入,VGA显示器输出测试,效 ...

  7. 201871010119-帖佼佼《面向对象程序设计(java)》第7周学习总结

    博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.co ...

  8. dev gridcontrol绘制页脚

    gridView.OptionsView.ShowFooter = true;//启用显示页脚 //索引为1的列 gridView.Columns[1].SummaryItem.DisplayForm ...

  9. C# 生成全球唯一标识符GUID

    string strguid = Guid.NewGuid().ToString();//57d99d89-caab-482a-a0e9-a0a803eed3ba 生成标准的标志符 (36位标准)st ...

  10. pip install pyspider失败的解决办法

    td{ width:10000px } 报错 下载pycurl库 地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pycurl 选择对应的python版本 ...