getopt

Get several values for the same option [duplicate]

扶醉桌前 提交于 2021-01-28 07:33:56
问题 This question already has answers here : C getopt multiple value (5 answers) Closed 6 years ago . I have a program like this : ./server Which has this usage : Usage : -p Port to use (4242 by default) -x Map width (20) -y Map height (20) -n Team name (name_team1 name_team2) -c Players per team -t Delay I was able to parse all the options with this code : int parse_cmd(int argc, char **argv, t_args *a) { char ch; if (argv[1] && argv[1][0] != '-') usage(); while ((ch = getopt(argc, argv, "p:x:y

Get several values for the same option [duplicate]

若如初见. 提交于 2021-01-28 07:23:58
问题 This question already has answers here : C getopt multiple value (5 answers) Closed 6 years ago . I have a program like this : ./server Which has this usage : Usage : -p Port to use (4242 by default) -x Map width (20) -y Map height (20) -n Team name (name_team1 name_team2) -c Players per team -t Delay I was able to parse all the options with this code : int parse_cmd(int argc, char **argv, t_args *a) { char ch; if (argv[1] && argv[1][0] != '-') usage(); while ((ch = getopt(argc, argv, "p:x:y

Getopts to flag bad options without dash

☆樱花仙子☆ 提交于 2020-11-29 09:56:48
问题 Getopt::Long::Configure("no_pass_through"); my %opts = (); GetOptions(\%opts, 'opt1=s', 'opt2=s', 'opt3' ); test.pl bad_option_without_dash How do I make getopts flag an error when a bad option is passed without a dash? I was expecting that no_pass_through will take care of this. What am I missing? 回答1: Getopt::Long just extracts the options. It's up to you to validate the value of those options and the non-option arguments (which are left in @ARGV ). Specifically, if you want to make sure

Getopts to flag bad options without dash

|▌冷眼眸甩不掉的悲伤 提交于 2020-11-29 09:56:12
问题 Getopt::Long::Configure("no_pass_through"); my %opts = (); GetOptions(\%opts, 'opt1=s', 'opt2=s', 'opt3' ); test.pl bad_option_without_dash How do I make getopts flag an error when a bad option is passed without a dash? I was expecting that no_pass_through will take care of this. What am I missing? 回答1: Getopt::Long just extracts the options. It's up to you to validate the value of those options and the non-option arguments (which are left in @ARGV ). Specifically, if you want to make sure

Optional command line arguments

偶尔善良 提交于 2020-04-06 05:03:34
问题 Given code like this, how do I actually set a file in the run options? I am using Spyder and have put -h -s -p -o as arguments, but I'm not sure how to specify a named file for the -o option. class CommandLine: def __init__(self): opts, args = getopt.getopt(sys.argv[1:],'hspw:o:') opts = dict(opts) if '-o' in opts: self.outfile = opts['-o'] else: self.outfile = None 回答1: This is a simple tutorial dealing with argpase. But first of all, i recommend you to read the official documentation if you

Linux环境下C语言getopt函数的详细解析

别等时光非礼了梦想. 提交于 2020-03-03 07:11:40
该函数在头文件 getopt.h 中。 函数原型: int getopt ( int argc , char * const argv [ ] , const char * optstring ) ; 返回值为int类型,其实解析成功一个选项时(可能这时看不懂,没关系,后面会解释)这个返回的就是一个字符,因为字符可以转为整数。 若解析完毕,则返回-1。 前两个参数大家都知道,就是main函数的参数选项: argc 是参数个数, argv 是参数的字符串数组(不要忘记 argv[0] 是"./可执行文件名")。而第三个参数就是 选项字符串 。 什么是 选项字符串 ? 选项 大家都知道,比如: gcc -o test test.c gcc -v 上面的 -o 、 -v 就是选项,其中 -o 是带参数的选项,其参数为 test ,而 -v 是不带参数的选项。 那么说了这么多, 选项字符串其实就是一定格式的字符串,它决定了传给程序的参数 argv中 可以有哪些选项,而这些选项中哪些可以有参数。然后运行程序时, getopt 函数对 argv 进行解析,依次返回成功解析的选项,解析完毕后返回-1。 举个例子:选项字符串给定:“ab:c::”,那么说明运行程序可以给最多三个参数,分别为 -a , -b 和 -c , 其中 -a ,因为 没有后跟冒号 是不可以有参数的; -b ,因为

Specify long command line arguments without the short format getopt

半世苍凉 提交于 2020-02-15 08:01:08
问题 Let's say I provide the following long option arguments structure: static const struct option long_opts[] = { { "version", no_argument, NULL, 'v' }, { "help", no_argument, NULL, 'h' }, { NULL, 0, NULL, 0 } }; How can I specify an additional option, named '--myoption', but without the short form? So I would be able to call only: ./binary --myoption I need this because I ran out of letters. 回答1: If you don't put that option into shortopts then no short option for that parameter will be used. E

python通过getopt模块如何获取执行的命令参数详解

心不动则不痛 提交于 2020-02-12 03:54:20
这篇文章主要给大家介绍了关于python通过getopt模块如何获取执行的命令参数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。 前言 python脚本和shell脚本一样可以获取命令行的参数,根据不同的参数,执行不同的逻辑处理。 通常我们可以通过getopt模块获得不同的执行命令和参数。下面话不多说了,来一起看看详细的介绍吧。 方法如下: 下面我通过新建一个test.py的脚本解释下这个模块的的使用 #!/usr/bin/python # -*- coding: utf-8 -*- import sys import getopt if __name__=='__main__': print sys.argv opts, args = getopt.getopt(sys.argv[1:], "ht:q:", ["url=",'out']) print opts print args 执行命令 : ./test3.py -t 20171010-20171011 -q 24 -h --url=https://www.baidu.com --out file1 file2 执行结果 : ['D:/GitReposity/hope_crontab_repo/sla_channel/test3.py', '

Python参数解析模块sys、getopt、argparse使用与对比分析

人盡茶涼 提交于 2020-02-12 02:32:01
今天小编就为大家分享一篇关于Python参数解析模块sys、getopt、argparse使用与对比分析,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 一些命令行工具的使用能够大大简化代码脚本的维护成本,提升复用性,今天主要是借助于python提供的几种主流的参数解析工具来实现简单的功能,主要是学习实践为主,这是新年伊始开工的第一篇,还是花了一番功夫来完成写作的和实验的,希望能够帮到需要的朋友们,新的一年里,祝大家心想事成! 好了,废话不多说,下面进入正文。 Python中有三个内建的模块用于处理命令行参数: 第一个:sys,最简单,只能够提供简单的参数解析功能 第二个:getopt,只能简单的处理命令行参数 ,较sys封装更好一点 第三个:argparse,使其更加容易的编写用户友好的命令行接口。它所需的程序进程了参数定义,argparse将更好的解析 sys.argv。同时argparse模块还能自动生成帮助及用户输入错误参数时的提示信息。 在命令行参数中分为“-”和“–”两种模式,具体的使用方法以及与异同点我都会在下面的实际使用中介绍到,主要是正确完成对两种命令参数模式的区分就行了。接下来的实践中,首先以sys模块为例,来观察该模块的参数解析过程,具体实践如下: def sysFunc(): ''' 基于 sys

getopt_long() option with optional argument

泄露秘密 提交于 2020-01-30 12:27:07
问题 I am trying to create a option with an optional argument using getopt_long(). Here is my code: static struct option long_options[] = { {"help", no_argument, NULL, 'h'}, {"debug", no_argument, NULL, 'd'}, {"config", optional_argument, NULL, 'c'}, {NULL, 0, NULL, 0} }; while ((ch = getopt_long(argc, argv, "hdc::", long_options, NULL)) != -1) { // check to see if a single character or long option came through switch (ch) { case 'h': opt.help = true; break; case 'd': opt.debug = true; break; case