java 创建名称带有特殊字符的文件_使用Python创建命令行工具

adb4b988cf70d682b2712f6a9f48afb5.png

关注BeTester,学习更多知识

让碎片成体系,让测试更专业

024208fc42f576ef099b1d90ea105341.png

1、概述

很多电影中的黑客都有一个特点:买不起鼠标!抱歉,瞧不起鼠标

究其原因,主要有以下几个:

  1. 鼠标点击速率远比键盘操作低。
  2. Linux主宰着黑客世界,Linux更多以命令行为主。
  3. 键盘的敲击感能给人激情澎湃的感觉(也是机械键盘盛行的原因)。

试想一下,在人群围观之下,我们键盘操作猛如虎,屏幕刷刷刷,围观群众直瞪眼,拍手称快。

e7b9c84cf339c3e8e400d1290fd256b3.gif

今天我们就籍此基于Python开发一个命令行工具。

笔者所使用的Python版本为 3.5。

2、开发过程

2.1 安装 docopt 类库

执行命令:pip install docopt

2.2 docopt 简要说明

docopt是Python的一个类库,使得通过指定格式的文本说明,即可自动处理命令行启动参数。

docopt约定在脚本代码开头使用 “”” “”” 文档注释符的形式,按照指定格式(如Usage、Options)编写文档说明,docopt自动生成对应的命令行参数,并进行处理(含错误处理机制)。

在使用docopt之前,Python提供默认的命令行参数类库 configparser,后续文章会讲解二者之间的区别。

2.3 本地创建文件夹 cli-demo 作为工程的根目录

0a7a9a0d766c4a3ff9e38c3bce2063ac.png
文件夹中不要存在中文字符或特殊字符,否则可能会导致解析失败

2.4 cli-demo目录下创建文件夹 pkg

3df8ca9d26d36097836c34d637801576.png

2.5 pkg文件夹内创建 init.py 文件

其中,init.py 记录版本信息

#encoding:utf-8__version__ = "v0.1.0"

2.6 pkg文件夹内创建 hello.py 文件

7ff27041a91241c6bc199c61f2cf370a.png

2.7 编写 docopt 文档注释

#encoding:utf-8""" CLI Demo Tool
Usage:
    clidemo cmdA <valueA>
    clidemo cmdB paramB <valueB>

Options:
    -h --help       Show Help doc.
    -v --version    Show Version.
"""

docopt会校验Usage内的命令格式,如 clidemo cmdA <valueA> 中,cmdA如果在命令行中出现 ,则为 True,否则为False,对应数值或字符串,否则为None。

docopt校验输入的命令格式中,不存在Usage定义的格式,则会提示错误,并显示使用方法。

2.8 hello.py编写核心代码

3c897cb898a4a3e427c3ebd31e6a9ed7.png

核心代码在 cmd 函数,实现内容为 符合命令行操作规则后输出指定命令内容,最终显示参数值。

最终的文件结构如下:

d7bbe8f19fde2fda20c73662ab80a17d.png

2.9 测试命令

python pkg/hello.py

c57b7285c1174c7d401e30c82fe02911.png

python pkg/hello.py cmdA

ad14fda05f188f23b63a16818efb97d0.png

python pkg/hello.py cmdA BeTester

339931e89adf738492a4593a39e227fb.png

python pkg/hello.py cmdB paramB

b4ee8026b49ea9e49e29c37fb20b90b7.png

python pkg/hello.py cmdB paramB BeTester

9996d2a3b3ba108bc28d2f3685b261d9.png

python pkg/hello.py cmdC

c9b436dcb443554f403d08b94d405df3.png

3、生成安装包

要编写第三方库或工具,最终需要 setup.py 来完成。 setup.py 核心是使用 distutils.core 类库的 setup 方法,解析该类库对应的依赖与输出约束,进而完成该类库的部署。

3.1 编写 setup.py

#encoding:utf-8from pkg import __version__from setuptools import setupfrom setuptools import find_packages

setup(
    name = "CliDemo",
    version = __version__,
    description = "Command line Demo",
    author = "betester",
    packages = find_packages(),
    platforms = "any",
    install_requires = [        "requests", 
        "docopt>=0.6.2"
    ],
    entry_points = {        "console_scripts": ['clidemo = pkg.hello:cmd'] 
    }
)

name

名称,用于所生成的egg文件的命名格式,egg的命名格式为: [name]-[version].[python3.5|python3.6].egg

egg 是 setuptools 引入的一种文件格式,用于Python模块的安装。setuptools可以识别egg文件并解析安装。
Eggs are the Pythons Jars are to Java。Egg之于Python 好比 Jar 之于 Java。

version

版本号信息,用于所生成egg文件的命名格式。

description

描述信息

author

作者名称

packages

需要处理的包目录,可以通过以下两种方式表示:

  1. 列表:如本工具中的pkg模块,可输入多个模块。
  2. find_packages:通过setuptools的find_packages获取源目录下所有的包。

platforms

适用的软件平台列表,any表示适配所有平台。

install_requires

对指定类库的依赖(及版本号依赖关系),如本工具对 docopt 有依赖。

entry_points

生成的工具,分为 console_scripts 和 gui_scripts 两种类型。console_scripts为命令行启动工具,gui_scripts为GUI启动工具。

当使用 console_scripts 时,clidemo 即为待生成的可执行文件的名称, pkg.hello:cmd为该可执行程序对应的执行方法。

pkg.hello:cmd 中,模块与方法之间使用 : 隔开。

3.2 安装命令行工具

在cli-demo目录下执行 python setup.py install

6b8b5c9585664754f38772d6a2c8f7ed.png

3.3 测试命令行工具

clidemo

format,png

clidemo cmdA

65aef528329226ca46e49ff4606f3949.png

clidemo cmdA BeTester

68393e0d52f4a617468f49d41fb8f496.png

clidemo cmdB paramB

a59d8e000bacdea8f3230e25fa5e7877.png

clidemo cmdB paramB BeTester

00a41dbbff45cc9287fbf8e7b6f58376.png

clidemo cmdC

ceddb43361b69a45708f8267e00c1332.png

4、小结

命令行工具在软件开发过程中始终占据着重要的地位,编译构建用到大家听过的 gradle命令或 xcodebuild 命令,更新代码时使用 git pull,触发自动化测试时使用robot命令(RobotFramework)。

同时,我们也可以根据工作需要,编写相应的测试工具完成重复、低效的工作,让我们的测试更加有趣,让我们的思维更加开阔。

153200f4506328e64d875fe7cb6e5e96.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值