WTCLAB撰写规范性要求示例

WTCLAB.NET

1. 前言-撰写规范性要求

本示例为WTCLAB技术团队工程开发成员而作。为公开性技术文档作简单示例。

  1. 为了文档具有规范的格式,美观的文风,技术文档均应以MarkDown语言来进行书写。文档可在线编辑,也可采用离线MarkDown编辑工具Haroopad等(见http://blog.csdn.net/shaoyubin999/article/details/79490757 )来编辑。
  2. 文档应简要叙述技术原理,解决问题的思路和关键方法。
  3. 文档要求是原创,即作者亲自实验为有效的,并能经得起读者重做,能为读者提供充分的消息,以说明验证步骤,验证软件环境等。
  4. 所书的代码应采用CSDN标准推荐的代码格式化,并力图做到行级注释。
  5. 要给出代码的运行结果,可用截图,动画截图或屏幕视频来演示操作过程和结果。
  6. 一篇博客应只关注一个技术点的解决,要小而精,不要大而全。

2. 示例-用Python完成定时屏幕截图

2.1 原理描述

本例要求的关键技术是:

  1. 找到Python实现定时操作的方法,使得每3秒钟自动对当前屏幕进行截取并保存为指定的文件(如取名为doTimer.py)。
  2. 找到Python实现屏幕截取的方法,将之写为一个可单独执行的程序(如取名为 screen.py)。
  3. 找到命令行传参方法,使得执行doTimer.py时能调用screen.py。
  4. 实验操作环境:本例采用Python3完成(Anaconda 3, Windows 10)。

2.2 如何实现定时

引入time包,以time.sleep方法控制定时。
【例】

import time  #引入time包
i=0
while True:
    time.sleep(0.5) #设置定时为0.5秒
    i=i+1
    print("main running turns = "+str(i))  #每0.5秒打印输出一次
    if i>=10:
        break
print("finished")   #打印到10次后结束,打出finished

程序执行后将每隔0.5秒打印出循环内输出字串,10次后结束。以下是在Anaconda 3下Spyder集成开发环境中的执行结果。
这里写图片描述
输出结果如下:

main running turns = 1
main running turns = 2
main running turns = 3
main running turns = 4
main running turns = 5
main running turns = 6
main running turns = 7
main running turns = 8
main running turns = 9
main running turns = 10
finished

2.3 如何实现命令行参数的传递

Python命令行参数传递很简单,直接上实验代码(chuanzhi.py)。

# chuanzhi.py
import sys
print(sys.argv[0])   #打印首参数(即文件名)
print(sys.argv[1])   #打印参数1
print(sys.argv[2])   #打印参数1

在windows控制台执行

C:> python chuanzhi.py abc 1234

结果是

C:> python chuanzhi.py abc 1234
chuanzhi.py
abc
1234

可见,Python用sys包来实现命令行传值。sys.argv[ ]依次获取包括执行程序文件名本身在内的参数字串。这样sys.argv [ 1 ] 就是字符串abc, sys.argv[ 2 ]就是字符串1234。而sys.argv [0]中则是文件名chuanzhi.py。

这里写图片描述

2.4 如何实现调用系统指令,使用Python调用Python

引入os包,用其中的os.system(“命令行”)方法,例如:

os.system(sys.argv[1])

将执行sys.argv[1]所引入的命令行。

2.5 如何实现屏幕截图

屏幕截图需要 ImageGrab的支持,具体方法是:
1、引入 ImageGrab

from PIL import ImageGrab

2、使用 ImageGrab的方法。 ImageGrab的方法有以下两个:

一、grab方法
函数原型
PIL.ImageGrab.grab(bbox=None)
用以截取屏幕bbox范围内的图片,默认截取全屏,例如:

ImageGrab.grab().show() #截取全屏并显示
ImageGrab.grab((0,0,100,100)).show()#截取左上角100px正方形

二、grabclipboard方法

函数原型

PIL.ImageGrab.grabclipboard()
用以获取剪切板内的图片

三、show方法

ImageGrab.grabclipboard().show()#获取剪切板内图片并显示
ImageGrab.grab().show() #截取全屏并显示

四、save方法

ImageGrab.save(filename)

其中filename字串这文件名(含扩展名),并由扩展名决定俣存图片的格式,如png,jpg等等。

2.6 综合上述技术,实现自动化定时截图并保存为以时间数为文件名的JPG图片

综合上述定时器、截屏、参数传递的基本使用方法,我们编写了试验测试程序如下。其中:
doTimer.py为主程序。
screen.py为被主程序调用的截屏程序。

doTimer.py代码:

## doTimer.py
import time,sys,os
while True:
    os.system(sys.argv[1])
    time.sleep(3) #每3秒启动一次
    print("main running")

screen.py代码

## screen.py
from PIL import ImageGrab #引入截图处理包
import time
im = ImageGrab.grab() #截屏
filename=str(time.time()) #生成基于时间字串的文件名前缀
im.save(filename+'sybscreen.jpg')   #保存截图为jpg文件
print( "screen... ctrl+C to break") #打印操作过程和提示

在Windows下调用格式为:

python doTimer.py “python screen.py”

2.7 如何将结果记录为GIF图片并展示出来

有很多工具软件可以对屏幕作动态记录并生成gif格式的动画文件。这里我用的是LICEcap,LICEcap是一款屏幕录制工具,支持导出 GIF 动画图片格式,轻量级、使用简单,录制过程中可以随意改变录屏范围。

(LICEcap下载参见腾讯 https://pc.qq.com/detail/0/detail_22760.html 或官网 http://www.cockos.com/licecap/)。

在Windows控制台执行

python doTimer.py “python screen.py”

可看到在默认文件夹下每3秒钟新产生一个新的jpg格式的截图文件。用LICEcap记录的动画如图。

这里写图片描述

最后以

Ctrl+C

来中断程序执行。

3. 下载

本例代码及文档的下载链接是:(建议使用百度网盘加密链接
https://pan.baidu.com/s/129FheGJ1alYdlA3USj40RA
密码:dflq

4. 后记

以上演示了程序操作文档的写法。MARKDOWN编辑器使用很简单,其在文档格式化、数学公式编辑、流程图应用上功能比微软的WORD好很多。以下附录是CSDN自带的关于MARKDOWN编辑器的示例和说明。

5. 参考文献或参考网址

这里写入本文涉及的文献。
【1】 Anaconda下载: https://www.anaconda.com/download/
【2】spyder编辑器:http://pythonhosted.org/spyder/
【3】昆明理工大学无线通信团队:http://www.wtclab.net/
【4】清华大学开源软件镜像站:https://mirrors.tuna.tsinghua.edu.cn/
【5】Markdown 语法说明:http://wowubuntu.com/markdown/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值