关闭

在偷懒的路上越走越远

标签: 阿里云企业邮箱
5440人阅读 评论(4) 收藏 举报
分类:

自从上班以来,真的是学到了很多,因为涉及一些“不能说的秘密”,我也只好在本地做了笔记,就不放到博客上了。

今天正好趁着周六,不用上班。就写了个偷懒的脚本,留着自己用好了。

需求

严格意义上来说,也不能算是需求了。起因是要每天写日报,发给导师和部门经理。每次都得打开浏览器,输入账号密码,点击很多个按钮,按照固定的格式叙述自己今天的工作内容以及明天的工作计划。一天两天还行,每天都要这么做,真的是有点讨厌了。

于是我就想着能不能直接写日报内容,其他部分就交给代码好了。这样我只需要专注“内容”,不用浪费其他操作占用的无效时间了。

设计

既然需求这么少,也就不需要什么概要设计,详细设计了。咱就能省事就省事,怎么方便怎么来吧。

大致有如下步骤:

  • 记录剪切板内容,发完邮件还原回去(暂时支持纯文本内容)
  • 编辑“日报内容”,自动生成格式良好的文本。
  • 调用发信模块,发给指定的人。
  • 还原剪切板内容,退出程序。

另外,脚本嘛,当然是Python了,用着多舒服。

实现 + 单元测试

按照上一节的设计,那就一步步来吧。

剪切板操作

之前使用Windows的时候,也多次操作过剪切板。但是那个时候有pywin32模块,对操作系统底层支持的比较好。但是现在用的是Mac了,就不能再用那个模块了。不过还好,有替代方案。

import subprocess

def get():
    p = subprocess.Popen(['pbpaste'], stdout=subprocess.PIPE)
    retcode = p.wait()
    data = p.stdout.read()
    return data

def set(data):
    p = subprocess.Popen(['pbcopy'], stdin=subprocess.PIPE)
    p.stdin.write(data)
    p.stdin.close()
    retcode = p.wait()

先来测试一下,看看效果咋样。

if __name__ == "__main__":
    # main()
    result = get()
    set(data="hello")
    temp = get()
    print "目前剪切板内容:",temp
    set(data=result)
    print "目前剪切板内容:",get()

我先在剪切板中复制几个字在偷懒的路上越走越远。然后开始运行脚本,得到的结果如下:

/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 /Users/changba/guo/tools//clipboard.py
目前剪切板内容: hello
目前剪切板内容: 在偷懒的路上越走越远

Process finished with exit code 0

内容编辑

这里其实没啥难度,关键是把时间这块给搞定。做到实时日期处理。

import time
def get_date():
    struct_time = time.localtime()
    year = struct_time.tm_year
    month = struct_time.tm_mon if struct_time.tm_mon >=10 else "0{}".format(struct_time.tm_mon)
    day = struct_time.tm_mday

    return "日期:{}-{}-{}\n".format(year, month, day)


def make_journal(today=[], tomorrow=[]):
    date = str(get_date())
    content = "{}\n今日工作内容:\n".format(date)
    for index, item in enumerate(today):
        content += "\t{}:{}\n".format(index+1, item)
    content += "\n明日工作计划:\n"
    for index, item in enumerate(tomorrow):
        content += "\t{}:{}\n".format(index+1, item)
    content += "\n郭璞//\n"

    return content

全是基础的内容,这里就先不运行了。具体要设计成什么样,还不是按我的想法来,╭(╯^╰)╮

发邮件模块

还记得很久很久以前,就在Windows上写过Python发邮件的脚本,有兴趣的可以翻翻我之前的博客。这下拿过来直接用就好了。

# coding: utf8

import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.utils import COMMASPACE

def mail():
    sender = "发件人邮箱"
    receivers = ['收件人邮箱'] # 列表
    ccs = ['抄送人邮箱']       # 列表

    message = MIMEText("正文部分内容!待会替换成日报内容!")
    message['From'] = Header("发件人名称", "utf-8")
    message['To'] = Header("导师", "utf-8")
    message['Cc'] = COMMASPACE.join(ccs)

    subject = "邮件主题"
    message['Subject'] = Header(subject, 'utf-8')


    try:
        smtpObj = smtplib.SMTP()
        smtpObj.connect("smtp.mxhichina.com", 25)
        smtpObj.login(sender, "邮箱登陆密码")
        smtpObj.sendmail(sender, receivers, message.as_string())
        smtpObj.quit()
        print '发送成功!'
    except Exception as e:
        print e, 'failed!'

if __name__ == '__main__':
    mail()

经测试,收件人和抄送人都可以收到邮件,基本上满足了需求了。

集成测试

基本的功能就算是完成了,接下来就是模块之间的整合了。也就是我们常说的集成测试。下面就简单的来封装一下,完善一下整个脚本吧。最后发现剪切板操作没什么作用了。
我就不写了,嘿嘿。。。

总结

脚本虽然写完了,但是感觉并没有什么大的用途。 不过多攒些这样的脚本,会让人越来越懒的吧。下次还是要先明确需求再写,要不然多后还是会发现这里多了,那里少了的。

1
0
查看评论

在这条路上越走越远

<br />计划总显得那样完美,事实却那么难做。<br /> <br />继续前进。NADA
  • nadakiss
  • nadakiss
  • 2010-06-01 13:55
  • 350

在多维数据分析模型的路上越走越远

关于作者:在百度工作八年,有七年在负责用户数据平台的建设,目前离职创业,欢迎试用他们的产品Sensors Analytics | 神策分析。前几天翻出了2012年2月在微博上发出的一条信息(图1),当时我为什么会那么兴奋,还得从更早的时候说起。 (图1 2012年的一条微博) 初...
  • pmcaff2008
  • pmcaff2008
  • 2015-10-27 10:53
  • 33

就这样,在Linux的路上越走越远

从这学期开始接触Linux,刚开始疯狂的看视频,装系统,就Linux虚拟机就装了有七八个 从unbuntu  ,到fedro, redhat ,kali ,centos,装完这些系统 ,发现系统是何其的相似,一个系列。最后体验了一下,用上了redhat ,因为这学期也开始接触oracle,...
  • VCCTor
  • VCCTor
  • 2015-06-04 00:48
  • 397

《在路上》——马云与中国80后的对话 精华

王利芬:在马云上台之前,我想跟大家说一句话,他这两天一直在生病而且浑身疼痛。他是带病来跟大家交流的。刚才我跟他说没关系你怎么坐都好,是不是同学们?OK,我们欢迎马云。马云,虽然大家都非常熟悉你,但是今天我们是在录制一场特别节目“《在路上》——马云与中国80后的对话”。在这个对话之前,我们设计了一组《...
  • fngy123
  • fngy123
  • 2014-08-03 23:31
  • 1241

2016年度总结——在路上

今天是2016年最后一天上班的日子,今天过后2016年的工作就算告一段落了(虽然明天还有最后一场篮球活动),我个人有写东西的习惯,从小时候写日记到现在写工作总结,我都觉着是件很美好的事情。回望过去、展望未来!总结是对这一年工作、生活的回顾、反思,是对未来生活、工作的憧憬。还是那俗话:“既要低头拉车,...
  • honghailiang888
  • honghailiang888
  • 2016-12-30 14:59
  • 1216

行走在路上

人生就是一场修行的过程,不仅要修身,更要修心,所以趁着年轻多出去走走,去经历风霜雨雪的洗礼,练就一颗豁达、睿智的心。有人说生活不仅是眼前的苟且,还有诗和远方;也有人说父母尚在苟且,你却在远方;而我想说的是自己都改变不了,又岂能改变身边人的命运?!所以要想改变他人,必先改变自己。   &#...
  • u013360881
  • u013360881
  • 2016-05-29 17:09
  • 255

程序员就是累死能干的闲死偷懒的

我不是一个“充满干劲的程序员”。我觉得,固定8小时工作之后,就应该去做点别的事情,比如说看看科幻小说,和我亲爱的妻子聊聊天等等。当别人问起,我会正儿八经地这么回答,“这才是所谓的生活。你也应该试一试”。 其实我内心非常看不上那些充满干劲的程序员,他们所谓的干劲就是一天花上12甚至16个小时坐在...
  • zang141588761
  • zang141588761
  • 2016-01-29 17:42
  • 2341

[自然语言处理] 在NLP的路上越走越远(自然语言处理各类资源wiki)

ACL文章链接 http://www.aclweb.org/anthology/ 2016年ACL-WMT机器翻译数据集 PaperWeekly http://rsarxiv.github.io/ 中国NLP联盟(墙裂推荐) https://gith...
  • LeYOUNGER
  • LeYOUNGER
  • 2017-06-28 22:14
  • 351

Java 技术路上的迷茫及远方

本场 Chat 将讲述笔者在毕业三年在 Java 路上: 遇到的技术坑跳过的槽面过的和我面过的人 诗和远方相关分享链接:http://gitbook.cn/gitchat/activity/59e86686c311f626c50e03fe?utm_source=gitchatseo
  • RSS_40728440
  • RSS_40728440
  • 2018-01-11 16:22
  • 28

Scala_(1)_基础

1.函数 sum(1 to 100:_*)// 提取出1-100中的所有元素,并实现sum操作 2.lazy 只有在初次运行时调用 如:lazy val content = fromFile(path) 3.集合 val arr = new Array[Int](5) 4.高阶函数 ...
  • imail2016
  • imail2016
  • 2017-05-18 10:10
  • 213
    个人资料
    • 访问:3234424次
    • 积分:34851
    • 等级:
    • 排名:第149名
    • 原创:357篇
    • 转载:35篇
    • 译文:9篇
    • 评论:733条
    友情链接
    我的偶像
    个人主页
      GitHub
    放松一下
    博客专栏
    最新评论
    版权信息
    去除本页广告
    图片炸弹装填中...

        
    [img=赞一个]http://bpic.588ku.com/element_origin_min_pic/16/12/12/0d96da96cf36505736c09d63832eaac8.jpg[/img]