在偷懒的路上越走越远

原创 2017年08月19日 12:15:16

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

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

需求

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

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

设计

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

大致有如下步骤:

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

另外,脚本嘛,当然是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()

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

集成测试

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

总结

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

版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。转载时请标注http://blog.csdn.net/marksinoberg.

相关文章推荐

easy_install 和 pip 的安装及使用

easy_install和pip都是用来下载安装Python一个公共资源库PyPI 的相关资源包的,pip是easy_install的改进版,提供更好的提示信 息,删除package等功能。老版本...
  • xsj_blog
  • xsj_blog
  • 2016年07月26日 17:08
  • 24310

第一次拥有自己的博客,希望在这条路上越走越远,加油

希望能在java路上越走越远

在前端的路上越走越远——我的前端路

一、初级二、中级三、高级

越走越远

 第一年刚来的时候拼命的给以前的同学、朋友 打电话,有事没事的时候总想打。那时候每天都想他们,总想告诉他们我的日子。第二年的时候开始渐渐得长大,慢慢的懂得如何承担责任与寂寞,于是电话变得越 来越少!虽...

第11期 《技术之路,越走越远》 2016年6月刊

一、 自荐人:周洲 自荐链接:http://blog.csdn.net/zhou2s_101216/article/details/51534295 自荐理由:SSM(spring mvc+sprin...
  • TGBBlog
  • TGBBlog
  • 2016年06月05日 18:10
  • 989

越走越远 (转)

第一年刚来的时候拼命的给以前的同学、朋友打电话,有事没事的时候总想打。那时候每天都想他们,总想告诉他们我的日子。第二年的时候开始渐渐得长大,慢慢的懂得如何承担责任与寂寞,于是电话变得越来越少!虽然我依...

每天学习一点点,每天记录一点点,android之路越走越远

防反编译、混淆文件proguard.cfg与proguard-project.txt详解 以下为参考链接: http://www.apkbus.com/android-131995-1-1...

国际游学意义大 美国游学学生:站的更高才能看的越远

今天下午,我们班王浩(化名)给全班同学上了一堂暑假国际游学分享课程,通过PPT给我们讲解了她暑假去美国游学的经历、收获和感悟,看他们的上课小视频还蛮精彩的,原来美国学生的课程比我们丰富那么多........

.Java多分支;if……else…… 每吨货物每公里运费P与运输距离S有关,路途越远,每公里运价越低。两种解决方案

每吨货物每公里运费P与运输距离S有关,路途越远,每公里运价越低。公式如下: p=10 s 8 100 7 150 6 200 5.5 300 5 s>=500 如果所付的总运费超过500...
  • KY1996
  • KY1996
  • 2017年07月15日 17:22
  • 376
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在偷懒的路上越走越远
举报原因:
原因补充:

(最多只允许输入30个字)