java 创建文件URL java创建文件命令_ide




java 创建文件URL java创建文件命令_ide_02


1、概述

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

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

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

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


java 创建文件URL java创建文件命令_qt执行cmd命令行_03


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

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

2、开发过程

2.1 安装 docopt 类库

执行命令:pip install docopt

2.2 docopt 简要说明

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

docopt约定在脚本代码开头使用 “”” “””

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

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


java 创建文件URL java创建文件命令_qt执行cmd命令行_04


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

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


java 创建文件URL java创建文件命令_qt执行cmd命令行_05


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

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


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


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


java 创建文件URL java创建文件命令_qt执行cmd命令行_06


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编写核心代码


java 创建文件URL java创建文件命令_qt执行cmd命令行_07


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

最终的文件结构如下:


java 创建文件URL java创建文件命令_qt执行cmd命令行_08


2.9 测试命令

python pkg/hello.py


java 创建文件URL java创建文件命令_ide_09


python pkg/hello.py cmdA


java 创建文件URL java创建文件命令_ide_10


python pkg/hello.py cmdA BeTester


java 创建文件URL java创建文件命令_qt执行cmd命令行_11


python pkg/hello.py cmdB paramB


java 创建文件URL java创建文件命令_qt执行cmd命令行_12


python pkg/hello.py cmdB paramB BeTester


java 创建文件URL java创建文件命令_qt执行cmd命令行_13


python pkg/hello.py cmdC


java 创建文件URL java创建文件命令_ide_14


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


java 创建文件URL java创建文件命令_ide_15


3.3 测试命令行工具

clidemo


java 创建文件URL java创建文件命令_qt执行cmd命令行_16


clidemo cmdA


java 创建文件URL java创建文件命令_qt执行cmd命令行_17


clidemo cmdA BeTester


java 创建文件URL java创建文件命令_qt执行cmd命令行_18


clidemo cmdB paramB


java 创建文件URL java创建文件命令_ide_19


clidemo cmdB paramB BeTester


java 创建文件URL java创建文件命令_ide_20


clidemo cmdC


java 创建文件URL java创建文件命令_qt执行cmd命令行_21


4、小结

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

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