在偷懒的路上越走越远

原创 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. 举报

相关文章推荐

PAM30 模拟登陆 投票

Python真的是让人爱不释手啊,一直以来都不知道如何自动投票,然而今天有幸看到了PAM30,下面谈一谈我一个小案例吧。准备PAM30下载地址编码前注意由于一开始没有什么概念,还以为是个第三方的库,就...

语音聊天

前言 环境 本机环境 所需包 各大模块 百度语音接口 图灵机器人接口 音频处理 本地朗读模块 GUI 模块 演示 文本 语音 总结前言这几天看了点PyQt相关的知识,感觉可以结合之前得一些内容做出点什...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

当图片验证码遇上JSP

今天看到了一个关于使用JSP方式生成图片验证码 的小例子,感觉真的是很不错,拿来分享一下。原理对于图片验证码,我们在审查元素的时候会方便的看出是标签,其指向 的也仅仅是一个资源而已,所以我们既可以为其...

处理音频--pyaudio

前言 安装 读写音频文件 play record wired playcallback Wirecallback 外部应用 总结前言很久之前写过一个将文本转成语音的,借助了一个名为pyttsx的库。具...

Python图片处理库之PIL

这个模块对于Python2.7 的windows64位电脑而言,还真的是不好找啊。这里分享一个下载链接吧,需要的朋友可以下载下来。PIL For Windows64 Python2.7下面分享一下这个...

在线 Python运行工具

摘要 准备 PHP环境设置 原理 system方式 exec 方式 源码 核心 完整代码 indexphp callpyphp temppy 演示 首页 提示信息 简要测试 运行等待 高级测试 错误提...

2002年

更加艰苦

Python 自动刷博客浏览量

哈哈,今天的话题有点那什么了哈。咱们应该秉承学习技术的角度来看,那么就开始今天的话题吧。思路来源今天很偶然的一个机会,听到别人在谈论现在的“刷量”行为,于是就激发了我的好奇心。然后看了下request...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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