命令行参数及全局替换程序

Posted woz333333

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了命令行参数及全局替换程序相关的知识,希望对你有一定的参考价值。

知识内容:

1.python命令行参数

2.全局替换程序

 

 

 

一、python命令行参数

1.什么是命令行参数

简单说在命令行中给定的参数就是命令行参数,命令行的参数以空格隔开

eg:  编译C语言生成一个exe文件后用命令行来输入一些参数

./res.exe this is some parameter中的this is some parameter是字符串参数

 

2.python中的命令行参数

(1)python中的命令行参数

在Python里,命令行的参数和C语言很类似(因为标准Python是用C语言实现的)。在C语言里,main函数的原型为int main(int argc, char **argv),这里主要指linux平台, argc指的是命令行传入的参数个数(程序的name为第一个参数),而argv则是一个指针数组,每一个元素为指向一个命令行参数的指针。在Python里的命令行参数是存储在sys.argv里,argv是一个列表,第一个元素为程序名称

使用方法:  python name.py arg1 arg2 arg3

取命令行参数:  sys模块和getopt模块

 

(2)sys模块取命令行参数

Python 中也可以所用 syssys.argv 来获取命令行参数:

  • sys.argv 是命令行参数列表。

  • len(sys.argv) 是命令行参数个数。

实例:

1 import sys
2 
3 print("参数个数为: %d" % len(sys.argv))
4 print("参数列表为: %s" % str(sys.argv))

将以上代码保存为test.py在命令行中运行,得到的结果如下:

1 D:\wyb\python\oldboy>python3 test.py 1 2 3 4 5
2 参数个数为: 6
3 参数列表为: [test.py, 1, 2, 3, 4, 5]

 

(3)getopt模块取命令行参数

getopt模块是专门处理命令行参数的模块,用于获取命令行选项和参数,也就是sys.argv。命令行选项使得程序的参数更加灵活。支持短选项模式(-)和长选项模式(--),该模块提供了两个方法及一个异常处理来解析命令行参数

这里我主要介绍以下这种方法: getopt.getopt 方法

getopt.getopt 方法用于解析命令行参数列表,语法格式如下:

getopt.getopt(args, options[, long_options])

方法参数说明:

  • args: 要解析的命令行参数列表。

  • options: 以列表的格式定义,options后的冒号(:)表示该选项必须有附加的参数,不带冒号表示该选项不附加参数。

  • long_options: 以字符串的格式定义,long_options 后的等号(=)表示如果设置该选项,必须有附加的参数,否则就不附加参数。

  • 该方法返回值由两个元素组成: 第一个是 (option, value) 元组的列表。 第二个是参数列表,包含那些没有‘-‘或‘--‘的参数。

 官方解释:

 1 getopt(args, shortopts, longopts=[])
 2         getopt(args, options[, long_options]) -> opts, args
 3 
 4         Parses command line options and parameter list.  args is the
 5         argument list to be parsed, without the leading reference to the
 6         running program.  Typically, this means "sys.argv[1:]".  shortopts
 7         is the string of option letters that the script wants to
 8         recognize, with options that require an argument followed by a
 9         colon (i.e., the same format that Unix getopt() uses).  If
10         specified, longopts is a list of strings with the names of the
11         long options which should be supported.  The leading --
12         characters should not be included in the option name.  Options
13         which require an argument should be followed by an equal sign
14         (=).
15 
16         The return value consists of two elements: the first is a list of
17         (option, value) pairs; the second is the list of program arguments
18         left after the option list was stripped (this is a trailing slice
19         of the first argument).  Each option-and-value pair returned has
20         the option as its first element, prefixed with a hyphen (e.g.,
21         -x), and the option argument as its second element, or an empty
22         string if the option has no argument.  The options occur in the
23         list in the same order in which they were found, thus allowing
24         multiple occurrences.  Long and short options may be mixed.

 

实例: 

 1 import getopt
 2 import sys
 3 
 4 
 5 def usage():
 6     print(-h help \n-i --ip address\n-p --port number\n)
 7 
 8 
 9 if __name__ == __main__:
10     try:
11         options, args = getopt.getopt(sys.argv[1:], "hp:i:", [help, "ip=", "port="])
12         for name, value in options:
13             if name in (-h, --help):
14                 usage()
15             elif name in (-i, --ip):
16                 print(value)
17             elif name in (-p, --port):
18                 print(value)
19     except getopt.GetoptError:
20         usage()

在命令行中输入以下测试:

 1 D:\wyb\python\oldboy>python3 test.py -h
 2 -h help
 3 -i --ip address
 4 -p --port number
 5 
 6 D:\wyb\python\oldboy>python3 test.py -i 12.56.45.1 -p 90
 7 12.56.45.1
 8 90
 9 
10 D:\wyb\python\oldboy>python3 test.py --ip 12.56.45.1 --port 90
11 12.56.45.1
12 90

注:

sys.argv[1:]是引入命令行参数(文件名后的命令行参数)

定义命令行参数时,要先定义带‘-‘选项的参数,再定义带‘--’的参数

 

 

 

二、全局替换程序

 

以上是关于命令行参数及全局替换程序的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse怎么全局搜索替换

Linux环境变量与命令行参数常见环境变量 | 环境变量的全局属性 | 命令行参数

Linux环境变量与命令行参数常见环境变量 | 环境变量的全局属性 | 命令行参数

Linux环境变量与命令行参数常见环境变量 | 环境变量的全局属性 | 命令行参数

Python必备基本技能——命令行参数args详解

在C++中,如何用不同长度的字符串替换一个命令行参数。