精华内容
下载资源
问答
  • 什么是命令行参数

    万次阅读 2018-04-15 16:29:55
    于仕琪 shiqi.yu@szu.edu.cnC/C++语言中的 main 函数,经常带有参数 argc,argv,如下:int main(int argc, char** argv)或者int main(int argc, char* argv[])在上面代码中,argc 表示命令行输入参数的个数(以空白...

    摘自《OpenCV 入门教程》 于仕琪 shiqi.yu@szu.edu.cn


    C/C++语言中的 main 函数,经常带有参数 argc,argv,如下:
    int main(int argc, char** argv)
    或者
    int main(int argc, char* argv[])
    在上面代码中,argc 表示命令行输入参数的个数(以空白符分隔),argv 中
    存储了所有的命令行参数。假如你的程序是 hello.exe,如果在命令行运行该程序
    (如图 1.14。首先应该在命令行下用 cd 命令进入到 hello.exe 文件所在目录),
    运行命令为:
    hello.exe Shiqi Yu
    那么,argc 的值是 3,argv[0]是"hello.exe",argv[1]是"Shiqi",argv[2]是"Yu"。


    图 1.14 使用命令行参数运行程序
    下面的程序演示 argc 和 argv 的使用:
    #include <stdio.h>
    int main(int argc, char ** argv)
    {
    int i;
    for (i=0; i < argc; i++)
    printf("Argument %d is %s.\n", i, argv[i]);
    return 0;
    }
    假如上述代码编译为 hello.exe,那么运行
    hello.exe a b c d e
    将得到
    Argument 0 is hello.exe.
    Argument 1 is a.
    Argument 2 is b.
    Argument 3 is c.
    Argument 4 is d.
    Argument 5 is e.
    运行
    hello.exe lena.jpg
    将得到
    Argument 0 is hello.exe.
    Argument 1 is lena.jpg.



    展开全文
  • Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单。os.Args如果你只是简单的想要获取命令行参数,可以像下面的代码示例一样使用os.Args来获取命令行参数。将上面的代码执行go build -o ...
    09978082d997f73202c50d17ffe0776b.png

    Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单。

    os.Args

    如果你只是简单的想要获取命令行参数,可以像下面的代码示例一样使用os.Args来获取命令行参数。

    bbf6fc867e116d1c6fe620ebc917a2cf.png

    将上面的代码执行go build -o "args_demo"编译之后,执行:

    $ ./args_demo a b c dargs[0]=./args_demoargs[1]=aargs[2]=bargs[3]=cargs[4]=d

    os.Args是一个存储命令行参数的字符串切片,它的第一个元素是执行文件的名称。

    flag包基本使用

    本文介绍了flag包的常用函数和基本用法,更详细的内容请查看官方文档。

    导入flag包

    import flag

    flag参数类型

    flag包支持的命令行参数类型有bool、int、int64、uint、uint64、float float64、string、duration。

    c36ad2063454391c008c45e12d432f0b.png

    定义命令行flag参数

    有以下两种常用的定义命令行flag参数的方法。

    flag.Type()

    基本格式如下:

    flag.Type(flag名, 默认值, 帮助信息)*Type 例如我们要定义姓名、年龄、婚否三个命令行参数,我们可以按如下方式定义:

    name := flag.String("name
    展开全文
  • 说下 Click 模块干啥的,简单说,它就是把我们的 Python 脚本的一些函数,通过 添加带有 Click 关键字的装饰器进行装饰进而将函数调用的形式转化为命令行传参的形式然后执行。听不懂也没关系,我们会一步一步来,...
    1949b646dd959c8fbcf95f61f37ba728.png

    快速上手 Python 命令行模块 Click

    关于Click?

    说下 Click 模块是干啥的,简单说,它就是把我们的 Python 脚本的一些函数,通过 添加带有 Click 关键字的装饰器进行装饰进而将函数调用的形式转化为命令行传参的形式然后执行。听不懂也没关系,我们会一步一步来,基本上按照我的实际应用情况来写的。 本文不会涉及太多复杂的语法和理论,将会用通俗的语言和大家进行分享。

    安装

    a027eef501276bd895c4cb3bd16313b3.png

    一个简单的例子

    首先我们创建一个demo.py

    c2d1004fa91fc59ccd73c66a6d20e3ff.png

    装饰器@click.command()会将我们的函数包装成 click 对象,然后我们可以在函数中调用 click 的一些方法,常用的是click.echo,它的作用类似我们的 print,输出用的。

    通过命令行我们可以这样运行这行代码

    85ae8a7773587a73bd55a16493a4f0df.png

    好了,我们的第一个例子完事了,我们发现此时的代码使用不使用 click好像没什么区别。 接下来我们就要对它进行拓展了,如果我们需要传入一个数字,然后打印这个时候,我们的代码就可以这样写了。

    传入我们的第一个参数

    8837600c82e15a8ccf0dc51a0c4d6532.png

    这里我们前面代码的基础上给函数 main 增加了 @click.option 装饰器。

    接下来说下这几个参数的含义 -n:表示我们在命令行指定参数名的时候使用它即可,注意是一个短'-' --num:是第一个参数的完整名称,我们在程序中接收值的时候使用它。注意是二个短'-'。 help:在命令行输入 "python3 demo.py --help" 的时候,它可以提示我们这个程序有哪些命令可以用。和我们使用命令行一个道理的。 然后我们的函数main的参数名就是,我们要接收的参数的完整名称,同时通过click.echo打印出来。,f"{num=}" 是 Python 3.8 以后的语法糖,如果 num=3 那么它等价于 num = 3。 最后记得在 __main__ 里执行我们的 main 方法。 好了,介绍完了代码,我们可以运行了,运行示例: 首先假设我们不知道它有几个参数。

    8b492e8ce00d554c7dd5bba4ca12910e.png

    通过help我们可以得到如下信息

    40914ae2677945ab2d8fe67ac0a72a11.png

    Usage: 对应我们当前文件名

    Options: 是一行一个参数,一个参数分为-开头的缩略参数,和--开头的完整参数名。

    然后我们后面可以看到它的类型是 TEXT。紧接着就是该参数的提示信息,通过 help 我们可以设置。

    64d457e818080b34d1cf88f70509fde7.png

    或者

    1e1d4e5aba48889499ac564ccc54e770.png

    上面两者输入方法是等价的使用哪个都行。

    现在思考一个问题,如果我们需要 num 的值为数字类型的 3 怎么弄呢?

    声明参数类型

    这里提供两种方法(当然不仅两种) 方法一:使用 type 关键字,type 就是 python 里的类型

    264926e0b6537056b075f795fae75a79.png

    再次执行代码

    1e5da5f1f93e4b95a84db9c31c694107.png

    同时查看 help 信息的时候 TEXT 变为了 INTEGER。

    方法二:使用 default 关键字,指定默认值为 1

    d1f8fc5ee1cf7547777d432435fb1d3a.png

    将 default 的值设置为数字,我们的命令行就知道了我们的参数类型为 int,

    这里处理指定了参数类型,还设定了默认值。设定为默认值的参数,可以不指定其值,这时候会使用默认值。

    如果我们使用 help 查看信息会发现和上面的方法一没什么区别的。这时候我们可以通过指定另外一个关键字,让它在 help 信息里显示默认值

    c4bdb268413943e448b93ecfa6b1fa9e.png

    通过加入 show_default 我们可以让 default 的值在 help 信息中显示了,内容格式如下:

    2535720908c7871e8ad4cfadde3cc662.png

    再加一个参数

    在上面代码的基础上对代码进行部分修改,主要是新添加一个参数 id。

    3f261e9fbf21263528d285cfcaaf2c47.png

    给之前的函数再添加@click.option装饰器即可。

    这里我添加了的参数为 id ,因为一般情况下 id 是不能为空的,所以我们就可以通过required = True对它进行限制,表示该参数为必传参数。如果不传就出现错误

    1eca2611b62c24449e586a6c38b494e8.png

    正确的使用方法应该是

    1cfa0ac40844635057c93cfe839da025.png

    到目前为止一个简答的命令行工具就生成了。接下来说下我用它做过什么事情。

    处理实际问题

    现在我们有个需求,根据用户名去 mongo 数据库中查找对应的用户登录信息,最终的生成信息格式如下:

    6de6f31280eeba8f0e7172773d25d013.png

    一开始我是通过在 python 脚本中加个配置文件,然后通过配置文件的形式进行用户名的修改,但是这种方式不灵活,每次都需要重新运行 Python 代码。或者我们还可以使用 fastapi搭建一个RESTful api的服务,但是我的懒得搭这个服务。最终我选择使用命令行的形式去运行。使用的模块就是今天说的这个 click 模块。

    接下来写一段需要代码:

    cf207a18ed751879be44f7b832cefaf0.png

    通过上面的码我们就可以通过命令行的形式进行查询了。

    989854034ece7b8a8a2e89619bdeb35d.png

    非常的方便。 如果这个时候,我需要一个临时添加用户的功能,就需要重新写一个函数了, 然后我们在命令行中如何控制两个函数的运行呢?这就是接下来要说的组。

    创建组的形式

    所谓的创建组,就是通过一个主入口函数,去关联其他的函数,然后其他的函数名可以作为命令直接使用。 好了首先创建一个主入口函数

    7628246c5a8cf5e61374f36c4f8c18cb.png

    这个时候我们发现 main 上面的装饰器变为了@click.group()。

    我们通过它准备创建一个命令行组。接下来我们开始创建组成员,所谓的组成员就是一个函数。

    efef315d4285d7faddf68505f7014771.png

    这个组成员的作用和它的函数名是一样的就是查询用户信息。

    这里需要注意的是组成员的装饰器由原来的

    @click.command变为了@main.command。

    main 就是上面 main 方法名。然后同样下面的 option 是声明一些参数。

    接下来我们创建第二个组成员,用来添加用户信息。

    cf16e90a6d143bc04de413f639964a15.png

    首先通过@main.command()将它加入到组。然后就是 option 一系列添加参数的操作。这个具体的参数信息上面都说了这里就不提了。好了我们就创建这两个成员, 如果需要其他的功能,比如说删除用户,可以继续添加一个 delete_user 函数,以此类推。

    下面我就说下如何执行上面的两个成员函数。

    首先,先看下它的 help 命令,都有什么内容,一般不知道一个命令行应用有什么命令参数的我时候我们可以使用它。

    845a103d7c6e54d6abcb60c116ade59f.png

    输出以下内容

    c74d37e5067e460c011b837d7e8d77a7.png

    其中 Commands 就是我们的成员函数的调用命令,需要注意一下它将函数原来的"_"变为了“-”。

    然后我们就可以调用查询方法了

    3e4b8873155fa54b942925ffc277639c.png

    然后我们就可以得到结果

    6341cd1329587b410557bbaaddcda998.png

    同样的调用添加用户信息的方法。

    ab4a82f04b6473caf6f9867e7209bf70.png

    因为-t不是必传参数所以我们可以忽略,使用默认值"phone"。

    好了,这就是今天要说的内容,基本上够日常操作了。

    877d581bd1d7ef94c6a7c66d80f40de6.gif
    展开全文
  • 更改Python命令行交互提示符的方法发布于 2015-10-16 08:55:40 | 127 次阅读 | 评论: 0 | 来源: 网友投递Python编程语言Python 一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一...

    更改Python命令行交互提示符的方法

    发布于 2015-10-16 08:55:40 | 127 次阅读 | 评论: 0 | 来源: 网友投递

    Python编程语言Python 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。

    这篇文章主要介绍了更改Python命令行交互提示符的方法,本文还介绍了一款开源软件iPython和Python的distutils,需要的朋友可以参考下

    一、定制Python的交互提示符

    Python的默认交互提示符为“>>>”,但它是可以定制的。

    Python启动后,先寻找PYTHONSTARTUP环境变量,然后执行此文件中变量指定的执行代码。

    一些Linux发布包提供了缺省的启动脚本,一般存放在其home目录,名为.pythonstartup。“Tab完成”和“命令历史”这两个功能增强了提示符应用,两者都基于readline模块。

    如果没有.pythonstartup文件,可以自己创建一个。

    简单例子:

    代码如下:

    # python startup file

    import readline

    import rlcompleter

    import atexit

    import os

    # tab completion

    readline.parse_and_bind('tab: complete')

    # history file

    histfile = os.path.join(os.environ['HOME'], '.pythonhistory')

    try:

    readline.read_history_file(histfile)

    except IOError:

    pass

    atexit.register(readline.write_history_file, histfile)

    del os, histfile, readline, rlcompleter

    可以在http://pypi.python.org/pypi/pbp.scripts另存为.pythonstartup。

    设置PYTHONSTARTUP环境变量

    如果是在Linux或Mac OS X下运行Python,最简单的方法是创建启动脚本,并保存到home目录。

    然后用PYTHONSTARTUP环境变量连接它,设置到系统启动脚本。例如在Bash和Korn shell,可使用.profile文件,你可以插入行,例如:

    export PYTHONSTARTUP=~/.pythonstartup

    在windows下,更为方便,设置PYTHONSTARTUP黄金变量即可。

    二、iPython

    iPython见:http://ipython.scipy.org

    iPython的目标是为交互应用和研究计算创建一个全面的环境。iPython有两个主要组件:

    1)一个增强的Python交互shell

    2)交互式并行计算架构

    iPython开源,当前版本:0.9.1。它是一个Python的增强shell。特征:

    -动态的对象检查

    -从提示符访问系统shell

    -Profiling的直接支持

    -调试方便

    三、Python的distutils

    Python自带了一套工具distutils,用于发布Python应用程序。它提供了:

    1、一个骨架

    提供标准元数据域,如作者名、License类型等等。

    2、一套帮助器

    明白怎样建立发布包。

    distutils没有提供定义其它依赖包的功能,setuptools工具增强了这一点。

    setuptools 框架,它是 Python Enterprise Application Kit(PEAK)的一个副项目。 setuptools 替换了标准的 distutils 库,并为 Python 添加了版本化的包和依赖性管理。

    Perl 用户比较熟悉 CPAN,而 Ruby 用户则比较熟悉 Gems;引导 setuptools 的 ez_setup 工具和随之而生的扩展后的 easy_install 与 “Cheeseshop”(Python Package Index,也称为 “PyPI”)一起工作来实现相同的功能。另外,setuptools 还让我们可以将自己的库包装成一个称为 “egg” 的包,它与 Java? 的 JAR 文件类似,不过是用于 Python 的。

    要安装setuptools,使用EasyInstall。

    EasyInstall是一个包下载器和安装器。EasyInstall是setuptools工具的补充,因为它知道怎样处理包建立。

    相关阅读:

    更改Python命令行交互提示符的方法

    Python调用命令行进度条的方法

    Python实现获取命令行输出结果的方法

    Python编程实现控制cmd命令行显示颜色的方法示例

    python 命令行自动补全的方法

    python文件读写操作与linux shell变量命令交互执行的方法

    Python安装使用命令行交互模块pexpect的基础教程

    利用Python命令行传递实例化对象的方法

    python命令行参数sys.argv使用方法

    Python 命令行非阻塞输入的示例

    Linux下使用python调用top命令获得CPU利用率的方法

    Python按行读取文件的简单实现方法

    展开全文
  • 命令行运行java前言:看了好多书一直强调刚开始学一门语言的时候,不要用IDE,要尝试着用命令行的模式,这篇博客在借鉴别人的基础之上,有一些补充来说明命令行模式下的Java的运行。首先区分文本编辑器与IDE的...
  • 语言障碍使用命令行操作的最大门槛,这仅仅因为我们中国人。如果对于英语熟练的人,用命令行操作就像在和 电脑聊天一样: 把包含的文件列出来,ls 切换到 cd ... 可以看到,从一个脑子里的想法到实际行为,...
  • 在编写命令行程序(工具、server)时,我们有时需要对命令参数进行解析,各种编程语言一般都会提供解析命令行参数的方法或库,以方便程序员使用。在Go语言中的 flag 包中,提供了命令行参数解析的功能。 下面我们...
  • Go语言-命令行参数(os.Args, flag包)

    万次阅读 2018-03-19 15:18:17
    大部分Go程序都没有UI的,运行在纯命令行的模式下,该干什么全靠运行参数。 这里介绍下Go语言命令行程序和他们的参数。 1. os.Args 程序获取运行他时给出的参数,可以通过os包来实现。先看代码: package ...
  • 命令行参数

    2021-03-11 15:46:00
    什么是命令行参数 C/C++语言中的 main 函数,经常带有参数 argc,argv,如下: int main(int argc, char** argv) 或者 int main(int argc, char* argv[]) 在上面代码中,argc 表示命令行输入参数的个数(以空白符...
  • 我们上文书说到,我们首先安装Java,然后设置Java环境,然后编译运行了一个简单的Java程序,在命令行模式下显示了一个“Hello baby”。那么,为什么呢?发生了什么呢?首先,下载安装Java就不用问为什么了对吧?所谓...
  • 网上搜索的大部分都用jython,但是我想要调用的python脚本里有import urllib,这个urllib也不是什么第三方扩展库,在python的安装path下的Lib下就有,在python命令行下肯定能找到的。但是用jython的话,...
  • 对于非软件专业的人来说,命令行是一个非常陌生的工具。平常我们使用电脑都只是鼠标操作,要写什么内容的时候才会使用键盘,几乎不会有人会用键盘来打开程序、下载应用等。那是因为电脑操作系统已经...
  • 关于shell命令行

    2020-03-22 17:29:02
    Shell 一个用 C 语言编写的程序,它用户使用 Linux 的桥梁。Shell 既是一种命令语言,又一种程序设计语言。 其中bash一般为Linux默认的shell命令行 #! 约定的标记告诉系统这个脚本需要什么解释器来执行 eg.1 #...
  • 今天我们再来了解一下java和javac的命令行都包含什么,以及它们的区别在哪,该如何操作?首先,我们都知道的,javac和java命令行都有-classpath选项。但是因为编程语言的不同所以操作的流程也大相径庭,接下来就...
  • 什么是命令行参数?命令行参数在运行时给予程序/脚本的标志。它们包含我们程序的附加信息,以便它可以执行。并非所有程序都有命令行参数,因为并非所有程序都需要它们。为什么我们使用命令行参数?如上所述,...
  • 今晚我在使用YAF框架的时候,遇到了一个问题:命令行下可以跑YAF框架的...那么为什么会出现这种情况呢?因为命令行和PHP-FPM两个不同的SAPI,它们可以加载不同路径下的php.ini文件。而通过:php php文件名这种方式...
  • 1.什么是命令行参数? 命令行参数在运行时赋予程序/脚本的标志。它们包含程序的其他信息,以便可以执行。 并非所有程序都具有命令行参数,因为并非所有程序都需要它们。在我的博客文章的Python脚本中广泛使用了...
  • 什么是命令行参数?命令行参数在运行时给予程序/脚本的标志。它们包含我们程序的附加信息,以便它可以执行。并非所有程序都有命令行参数,因为并非所有程序都需要它们。为什么我们使用命令行参数?如上所述,...
  • 但是,尽管SIRI语音解释和识别接口,但LIRI是语言解释和识别接口。 LIRI将一个命令行节点应用程序,它接受参数并向您提供数据。 如何使用LIRI? 如前所述,LIRI将成为命令行节点应用程序。 因此,只需打开终端...
  • 网上搜索的大部分都用jython,但是我想要调用的python脚本里有import urllib,这个urllib也不是什么第三方扩展库,在python的安装path下的Lib下就有,在python命令行下肯定能找到的。但是用jyt
  • PHP的命令行脚本开发

    千次阅读 2015-10-30 13:49:20
    PHP能做什么PHP官方文档不要脸的说PHP能做任何事,这和业界广为流传气死其他程序员不偿命的PHP最好的语言可真是遥呼相应。PHP主要用于以下三个领域(1) 服务端脚本这最主要的领域,PHP 解析器(CGI 或者服务器模块...
  • Rust 输出到命令行在正式学习 Rust 语言以前,我们需要先学会怎样输出一段文字到命令行,这几乎学习每一门语言之前必备的技能,因为输出到命令行几乎是语言学习阶段程序表达结果的唯一方式。在之前的 Hello, World...
  • 本着不出错的原则,就百度了一下详细的教程,可是发现多数教程只是写了一大堆代码,但是都未能谈论到本质的东西,所以,我决定和大家来谈一下这个各大软件(语言编辑器)配置的环境变量到底是什么鬼。怎么通过命令行...
  • 什么是命令行参数? 命令行参数在运行时给予程序/脚本的标志。它们包含我们程序的附加信息,以便它可以执行。 并非所有程序都有命令行参数,因为并非所有程序都需要它们。 为什么我们使用命令行参数? 如上所述,...
  • php能做什么PHP官方文档不要脸的说PHP能做任何事,这和业界广为流传气死其他程序员不偿命的PHP最好的语言可真是遥呼相应。PHP主要用于以下三个领域(1) 服务端脚本这最主要的领域,PHP 解析器(CGI 或者服务器模块...
  • 一个命令行是基于文本的界面,可用于向计算机系统输入指令;linux命令行由一个程序提供,这个程序被称为shell。 什么是shell提示符? 以交互方式使用shell,在等待用户输入命令时显示一个字符串,这个界面就叫提示...
  • 可是不久人们就发现,这些命令行其实可以用更加聪明的方法构造,比如定义一些变量,或者根据系统类型的不同执行不同的命令。于是,人们为这脚本语言加入了变量,条件语句,数组,等等构造。“脚本语言...
  • 什么是命令行参数? 命令行参数在运行时给予程序/脚本的标志。它们包含我们程序的附加信息,以便它可以执行。 并非所有程序都有命令行参数,因为并非所有程序都需要它们。 为什么我们使用命令行参数? 如上所述,...
  • 命令行外壳程序在设计上交互性的,并具有非常丰富和熟悉的工具集,可以直接应用于Stellar API,其范围包括简单的帐户详细信息: $ bb load-account GADGVH6PHMF2UGVHO446SHQR2WUJEELRBSDPRQBP7K63WJBKMV5MFX2F |...
  • 不少同学刚接触c语言的时候,不知道c语言干嘛用的,学完了好像也没有什么地方能用到,实际上,c语言学习编程的基础,所有的编程语言基于c语言而逐步发展的,只要你学好了c语言,其它语言基本一看就能看懂...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,010
精华内容 804
关键字:

命令行是什么语言