python getopt的用法
python中 getopt 模塊,
該模塊是專門用來處理命令行參數的
函數getopt(args, shortopts, longopts = [])
參數args一般是sys.argv[1:]
shortopts 短格式 (-)
longopts 長格式(--)
try:
options,args = getopt.getopt(sys.argv[1:],"hp:i:",["help","ip=","port="])
except getopt.GetoptError:
sys.exit()
for name,value in options:
if name in ("-h","--help"):
usage()
if name in ("-i","--ip"):
print ‘ip is----‘,value
if name in ("-p","--port")
print ‘port is----‘,value
python test.py -i 127.0.0.1 -p 80 55 66
“hp:i:”
短格式 --- h 後面沒有冒號:表示後面不帶參數,p:和 i:後面有冒號表示後面需要參數
["help","ip=","port="]
長格式 --- help後面沒有等號=,表示後面不帶參數,其他三個有=,表示後面需要參數
返回值 options 是個包含元祖的列表,每個元祖是分析出來的格式信息,比如 [(‘-i‘,‘127.0.0.1‘),(‘-p‘,‘80‘)] ;
args 是個列表,包含那些沒有‘-’或‘--’的參數,比如:[‘55‘,‘66‘]
註意:定義命令行參數時,要先定義帶‘-‘選項的參數,再定義沒有‘-’的參數
再說說linux下getopt用法
#include <unistd.h>
int getopt(int argc,char * const argv[ ],const char * optstring);
a:b:cd::e",這就是一個選項字符串。對應到命令行就是-a ,-b ,-c ,-d, -e 。冒號又是什麽呢? 冒號表示參數,一個冒號表示這個選項後面必須帶參數(沒有帶參數會報錯哦),但是這個參數可以和選項連在一起寫,也可以用空格隔開,比如-a123 和-a 123(中間有空格) 都表示123是-a的參數;兩個冒號表示參數可選,即可以有參數,也可以沒有參數,但要註意有參數時,參數與選項之間不能有空格(有空格會報錯的哦),這一點和一個冒號時是有區別的。
#include <unistd.h>
#include <stdio.h>
int main(int argc, char * argv[])
{
int ch;
printf("\n\n");
printf("optind:%d,opterr:%d\n",optind,opterr);
printf("--------------------------\n");
while ((ch = getopt(argc, argv, "ab:c:de::")) != -1)
{
printf("optind: %d\n", optind);
switch (ch)
{
case ‘a‘:
printf("HAVE option: -a\n\n");
break;
case ‘b‘:
printf("HAVE option: -b\n");
printf("The argument of -b is %s\n\n", optarg);
break;
case ‘c‘:
printf("HAVE option: -c\n");
printf("The argument of -c is %s\n\n", optarg);
break;
case ‘d‘:
printf("HAVE option: -d\n");
break;
case ‘e‘:
printf("HAVE option: -e\n");
printf("The argument of -e is %s\n\n", optarg);
break;
case ‘?‘:
printf("Unknown option: %c\n",(char)optopt);
break;
}
}
}
./a.out -a -b 123
python getopt的用法