getopt

python的sys.argv

匿名 (未验证) 提交于 2019-12-02 22:54:36
「argv」是「argument variable」参数变量的简写形式,一般在命令行调用的时候由系统传递给程序。这个变量其实是一个List列表,argv[0] 一般是被调用的脚本文件名或全路径,和操作系统有关。sys.argv变量是一个字符串的列表。特别地,sys.argv包含了命令行参数 的列表,即使用命令行传递给你的程序的参数。 注意,Python从0开始计数,而非从1开始。sys.argv[]是用来获取命令行参数的,sys.argv[0]比如在CMD命令行输入 “python test.py -help”,那么sys.argv[0]就代表“test.py”。sys.argv[0]是命令名;sys.argv[1:] 是所有参数;sys.startswith() 是用来判断一个对象是以什么开头的,比如在python命令行输入“'abc'.startswith('ab')”就会返回True。 取得命令行参数   在使用之前,首先要取得命令行参数。使用sys模块可以得到命令行参数。 import sys print sys.argv   然后在命令行下敲入任意的参数,如: python get.py -o t --help cmd file1 file2   结果为: ['get.py', '-o', 't', '--help', 'cmd', 'file1', 'file2']  

python3 getopt用法

匿名 (未验证) 提交于 2019-12-02 22:11:45
python channel_builder.py -s /Users/graypn/ -d /Users/graypn/Documents -m 7 --out=report/xx.html 参数也分长格式和短格式 短格式:-s 长格式:--source opts, args = getopt.getopt(sys.argv[1:], "hs:d:m:v:p:c:", ["help", "src=", "dst=", "major=", "version=", "platform=", "channels="]) 这个 opts 是一个字典类型,getopt.getopt(x,y,z) x函数第一个传入参sys.argv[1:],y第二个传段short短数名"hs:d:m:v:p:c:",z第三个是long长参数名["help", "src=", "dst=", "major=", "version=", "platform=", "channels="] short 用法就是 python test.py -h 111 long用法可以2种 --out=res/tt.html 或者直接 --out res/tt.html 关于第二个参数初学者会很困惑这啥意思: 其实是这样的单独一个字母表示该参数不带值,一个字母加个:比如p:表示该参数后面带值,"hf:-v"也可以写成'-h-f

翻译:man getopt(1)中文手册

匿名 (未验证) 提交于 2019-12-02 21:53:52
NAME getopt - 解析命令行选项(加强版) SYNOPSIS getopt optstring parameters getopt [options] [--] optstring parameters getopt [options] -o|--options optstring [options] [--] parameters (译注: 后面的译文中将分别称呼这3种语法格式为语法1、语法2、语法3 请区分option、parameter、argument、option argument、non-option parameter。如不清楚,请参考: https://www.cnblogs.com/f-ck-need-u/p/9758075.html ) DESCRIPTION getopt用于拆分(解析)命令行中的选项,以便能被shell程`如shell脚本)轻松解析,也用来检查选项是否合理。该命令使用的是GNU getopt(3)程序实现的。 getopt的参数分为两部分:用于修改getopt解析模式的选项(即语法中的options和-o|--options optstring)和待解析的参数(即语法中的parameters部分)。第二部分将从第一个非选项参数开始,或者从"--"之后的第一项内容开始。如果在第一部分中没有给定"-o|--options"

php cli模式下获取参数的方法

眉间皱痕 提交于 2019-12-02 19:43:06
php在cli模式下接收参数有两种方法 1.使用argv数组 2.使用getopt方法 1.使用argv数组 例如:需要执行一个php,并传递三个参数(type=news, is_hot=1, limit=5) 创建test.php <?php print_r($argv); ?> 在命令行执行 php test.php news 1 5 输出: Array ( [0] => test.php [1] => news [2] => 1 [3] => 5 ) 可以看到argv[0]为当前执行的php文件名称,而argv[1]~argv[3]则是传递的参数的值 argv[1]等于type的值 argv[2]等于is_hot的值 argv[3]等于limit的值 这样可以根据argv数组来获取传递的参数进行后续的处理操作。 缺点: 使用argv数组,可以按顺序获取传递的参数。但获取后,需要做一个对应处理,上例中需要把argv[1]对应type参数,argv[2]对应is_hot参数,argv[3]对应limit参数。而如果在传递的过程中,参数顺序写错,则会导致程序出错。 例如: <?php $param = array(); $param['type'] = $argv[1]; $param['is_hot'] = $argv[2]; $param['limit'] = $argv[3]

How to use getopt/OPTARG in Python? How to shift arguments if too many arguments (9) are given?

对着背影说爱祢 提交于 2019-12-02 17:07:59
How to use getopt/optarg in Python? Makis This is an example of how I do it, I usually use the same basic template: import sys import getopt try: opts, args = getopt.getopt(sys.argv[1:], 'm:p:h', ['miner=', 'params=', 'help']) except getopt.GetoptError: usage() sys.exit(2) for opt, arg in opts: if opt in ('-h', '--help'): usage() sys.exit(2) elif opt in ('-m', '--miner'): miner_name = arg elif opt in ('-p', '--params'): params = arg else: usage() sys.exit(2) I don't think there is any 9 parameter limit. A google search would have helped. Have a look at the getopt and argparse modules in the

[R] 如何在Linux命令行进行参数传入?

吃可爱长大的小学妹 提交于 2019-12-02 06:02:40
以前由于 R 命令行传参不友好,经常嵌套在其他程序语言(如 Perl/Python )中来进行传参,但现在也陆续有一些方式来实现 R 的传参了,这里简单罗列下。 方法一 最传统的方法就是使用系统自带的 commandArgs 函数,直接按位置顺序传入。这种方法简短、快速,适合个人使用。一般也能满足我们的需求了,但对于其他用户是不够友好的。 #test.R args=commandArgs(T) file=read.table(args[1]) ... #command line $Rscript test.R file 方法二 使用 getopt 包,参数形式为: getopt( spec = NULL, opt = commandArgs(TRUE), command = get_Rscript_filename(), usage = FALSE, debug = FALSE ) 说明: spec 是一个 4-5 列的矩阵,里面包括了参数信息,前四列是必须的,第五列可选。 第一列:参数的 longname ,多个字符。 第二列:参数的 shortname ,一个字符。 第三列:参数是必须的,还是可选的,数字: 0 代表不接参数 ; 1 代表必须有参数; 2 代表参数可选。 第四列:参数的类型。 logical;integer;double;complex;character

‘main’ is normally a non-static function ERROR

一笑奈何 提交于 2019-12-02 04:27:13
问题 There are two errors that show up: main.c:80: warning: ‘main’ is normally a non-static function main.c:88: error: expected declaration or statement at end of input and I cant't seem to find the problem... There number of curly braces is equal... What seems to be the problem? #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <getopt.h> #include <string.h> #include "main-getopt.h" void print_usage_and_abort( const char *message ) { if( NULL != message ) fprintf( stderr, "Error

getopt not accepting argument value starting with hyphen -

允我心安 提交于 2019-12-02 03:19:01
My script has an option o , which should accept argument as value, as below ./script -o '-p 2' ls but getopt is not allowing, giving an error Unrecognized option '-p 2' code snippet: ARGS=$(getopt -a -n $0 -o o::h -- "$@") eval set -- "$ARGS" while true do case "$1" in -o) opt="$2"; echo "options: $2"; shift; shift;; -h) echo "$usage"; exit 0;; --) cmd="$2"; shift; break;; esac done How can I pass arguments as value to script? Flows You should use getopts following a tutorial #!/bin/bash while getopts "o:h" opt; do case $opt in o) option="$OPTARG"; echo "options: $option";; h) echo "$usage";

‘main’ is normally a non-static function ERROR

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-02 02:37:19
There are two errors that show up: main.c:80: warning: ‘main’ is normally a non-static function main.c:88: error: expected declaration or statement at end of input and I cant't seem to find the problem... There number of curly braces is equal... What seems to be the problem? #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <getopt.h> #include <string.h> #include "main-getopt.h" void print_usage_and_abort( const char *message ) { if( NULL != message ) fprintf( stderr, "Error: %s\n", message ); fprintf( stderr, "Usage: partitioner -n <nodes> [ -f <basename> ]\n\n" ); exit( -1

python学习笔记(CMD执行文件并传入参数)

坚强是说给别人听的谎言 提交于 2019-12-01 22:42:30
好久没更新博客了 最近换了份新工作 有时间来整理一篇 在命令行CMD中执行文件过程中如何传入并识别参数 1 # -*- coding: utf-8 -*- 2 # CMD运行类 3 # 作者: 陈磊 4 # 时间: 2019-10-22 5 6 7 import sys 8 import getopt 9 10 11 from WorkUtils.UtilsLog import UtilsLog 12 13 14 class UtilsCmd: 15 def __init__(self): 16 self.log = UtilsLog() 17 self.log.info("调用CMD运行类") 18 self.log.info(self.__class__) 19 20 def usage(self): 21 self.log.debug("帮助信息:") 22 self.log.debug(" * -h : print this.") 23 self.log.debug(" * -c [val] : 用例描述") 24 self.log.debug(" * -v [val] : 版本号") 25 26 def case_cmd(self): 27 self.log.debug("运行用例执行参数模式。。。") 28 description = "" 29 version = "