⑴ 锻戒护琛屽弬鏁版槸浠涔
闂棰树竴锛歝璇瑷涔犻桡纴鎴戝畬鍏ㄦ病澶寸华锛屽懡浠よ屽弬鏁版槸浠涔堜笢瑗垮晩锛燂纻 void main(int argc, char *argv[])杩椤彞璇濅腑𨰾鍙蜂腑镄刬nt argc,char *argv[]鏄鍙浠ョ渷鐣ョ殑锛岃繖鏄灏辨槸锻戒护琛屽弬鏁帮纴argc镄勫煎氨鏄浣犲懡浠よ屽弬鏁扮殑椤规暟锛屼綘鏄痺indows鐜澧冧箞锛焪indows涓嬬紪璇戝ソ涓涓绋嫔簭鏄鐩存帴鍙屽嚮杩愯岋纴浣嗘槸浣犳垒鍒版枃浠剁洰褰曪纴鍙浠ヤ粠鎺у埗鍙拌緭鍏ユ枃浠跺悕镓ц岀殑锛岄偅涔堜綘杈揿叆鍦ㄦ带鍒跺彴镄勫唴瀹瑰氨鍙锅氩懡浠よ屽弬鏁帮纴鍖呮嫭鏂囦欢钖嶅拰钖庨溃镄勫唴瀹癸纴浠ョ┖镙奸殧寮锛屾瘆濡备綘杩欎釜绋嫔簭鍙2-5.闾d箞褰扑綘鍦ㄦ带鍒跺彴杈揿叆2-5镄勬椂鍊欙纴argc灏变负1锛屽綋浣犲伐鍏2-5 file1镄勬椂鍊欙纴argc灏变负2锛岀幇鍦ㄧ煡阆扑负浠涔坅rgc涓4浜嗗惂銆傝呖浜巃rgv[]锛岃繖鏄涓涓瀛楃︿覆鏁扮粍锛屽洜涓篴rgc涓4锛屾墍浠ュ畾涔変简涓涓瀛楃︿覆鏁扮粍涓篴rgv[4]锛屾湁锲涗釜鍏幂礌锛屽垎鍒涓篴rgv[0],argv[1],argv[2],argv[3]锛宲 = argv[1]銆傚氨鏄痜ile1鍟︼纴puts(p+1)锛屽湴鍧钖戝彸锅忕Щ涓浣嶏纴镓浠ュ墠闱㈢殑f灏变笉瑙佸暒
闂棰树簩锛欳++锻戒护琛屽弬鏁版槸浠涔堟剰镐濓纻 锻戒护琛 閲岀粰鍑恒
argc 鏄锻戒护琛屽弬鏁版讳釜鏁帮纴钖绋嫔簭钖 鍜 浣岖疆鍙傛暟銆
argv[0] -- 绋嫔簭钖
argv[1] -- 鍙傛暟涓
argv[2] --鍙傛暟浜
argv[n] -- 鍙傛暟n
渚嫔 锻戒护琛岋细
abc.exe 123 xyz 56.789
main 銮峰缑锛
绋嫔簭钖峚bc.exe 锛屽弬鏁1=钬123钬 鍙傛暟2=钬渪yz钬 鍙傛暟3=56.789
argc 涓 4
闂棰树笁锛欳璇瑷涓镄勫懡浠よ屽弬鏁板埌搴曟槸浠涔堬纴搴旇ュ备綍杩愮敤锻 锻戒护琛屽弬鏁板嵆 杩愯岀▼搴忔椂 𨰾嶅叆镄勪綅缃鍙傛暟銆
渚嫔 绋嫔簭钖 a.exe,
杩愯岀▼搴忔椂 𨰾嶅叆 a.exe p1 p2 p3 p4 p5
杩欓噷镄 p1 p2 p3 p4 p5 灏辨槸 锻戒护琛屽弬鏁般
渚嫔 鐭╁舰闱㈢Н璁$畻绋嫔簭 a.exe锛屽懡浠よ屽弬鏁 瀹 楂桡细
#include
int main(int argc, char *argv[])
{
double w,h;
if (argc 闂棰桦洓锛氭眹缂栬瑷涓锻戒护琛屽弬鏁版槸浠涔堟剰镐 bbs.csdn/topics/310054390
闂棰树簲锛氩懡浠よ屽弬鏁 锻戒护琛屽弬鏁板氨鏄浣犲湪镓ц岀▼搴忔椂.钖庨溃鎺ョ殑涓滆タ.
姣斿傝存湁涓涓绋嫔簭钖嶅瓧鍙:a.exe
姝e父镓ц岀殑镞跺欐槸:a.exe
浣嗘槸链夋椂鍊欐垜浠闇瑕佺粰瀹冧紶涓浜涘弬鏁拌繘铡.姣斿傝繖镙:a.exe a b c
a b c 灏辨槸a.exe杩欎釜锻戒护镄勫弬鏁.
鍦ㄧ▼搴忎腑.浼氩湪main鍑芥暟涓瀹氢箟銮峰彇鍒.
闂棰桦叚锛氢粈涔堟槸c镄勫懡浠よ屽弬鏁?? int main(int argnum, char* args)
鍑芥暟镄勭涓涓鍙傛暟琛ㄧず鍙傛暟镄勪釜鏁帮纴绗浜屼釜瀛楃︿覆鏁扮粍琛ㄧず鍙傛暟鏁扮粍銆
#include
int main(int argnum, char* args)
{
int i;
for(i=0;i 闂棰树竷锛氢粈涔堟槸C璇瑷锻戒护琛屽弬鏁 缁欎綘涓渚嫔瓙锛岀敤C璇瑷缂栫▼瀹炵幇锛岃繍琛屾椂瑕佹眰甯︿袱涓瀛楃︿覆鍙傛暟锛岃緭鍑鸿繖涓や釜瀛楃︿覆涔嬮棿镄勫叧绯汇
#include
#include
void main(int argc,char *argv[])
{
if (argc!=3)
printf(璇峰湪杩愯岀▼搴忔椂鎻愪緵涓や釜瀛楃︿覆鍙傛暟锛佷緥濡傦细testApp aaa bbb\n);
else
{
if (strcmp(argv[1],argv[2])>0)
printf(瀛楃︿覆1澶т簬瀛楃︿覆2);
else if(strcmp(argv[1],argv[2]) 闂棰桦叓锛欳璇瑷涓 " 锻戒护琛屽弬鏁 " 鏄浠涔堟剰镐 姣斿傝翠綘镄凛缂栬疟鍑烘潵镄勭▼搴忎负abc.exe
濡傛灉浣犵殑绋嫔簭杩愯屾槸闇瑕佽緭鍏ュ弬鏁帮纸int main(int argc, char *argv[])锛夛纴鍒欐墽琛屾槸锷犲湪ABC.exe 钖庤竟镄勫弬鏁板氨鏄锻戒护琛屽弬鏁颁简
闂棰树节锛氩叧浜庡懡浠よ屽弬鏁 int main(int args, char** argv)
args鏄锻戒护琛屽弬鏁颁釜鏁帮纴链渚嬩腑涓3
钖庨溃argv[0]鏄锻戒护链韬玜rgv[1]鏄-2
argv[2]鏄鏂囦欢钖
浠ヤ笂锲炵瓟浣犳弧镒忎箞锛
闂棰桦崄锛氭眰锷╋纴锻戒护琛屽弬鏁版槸浠涔堬纴瀹炲湪鏄涓嶆槑锏 寰杞杩欐牱璇
Microsoft(R) Windows(R) 镎崭綔绯荤粺缁勭瓥鐣ュ埛鏂板疄鐢ㄧ▼搴 v5.1(C) Microsoft Corporation. All rights reserved.璇存槑: 鍒锋柊缁勭瓥鐣ヨ剧疆銆傝娉: GPUpdate [/Target:{puter | User}] [/Force] [/Wait:] [/Logoff] [/Boot] [/Sync]鍙傛暟:鍊 璇存槑/Target:{puter | User} 鎸囧畾鍙链夌敤鎴锋垨璁$畻链 绛栫暐璁剧疆宸茶鍒锋柊銆傛寜榛樿ゆ柟寮忥纴 鐢ㄦ埛鍜岃$畻链虹瓥鐣ヨ剧疆琚 鍒锋柊銆/Force 閲嶆柊杩愮敤镓链夌瓥鐣ヨ剧疆銆傛寜榛樿ゆ柟寮忥纴 鍙链夊凡缁忔敼鍙树简镄勭瓥鐣ヨ剧疆琚 杩愮敤銆/Wait:{value} 璁剧疆绛夊緟绛栫暐澶勭悊瀹屾垚镄 绉掓暟銆 榛樿ゅ兼槸 600 绉掋傚 '0' 镒忔濇槸涓嶈佺瓑寰呫 鍊 '-1' 镒忔濇槸镞犻檺链熺瓑寰呫 褰撹秴杩囨椂闂撮檺鍒讹纴杩斿洖 锻戒护鎻愮ず锛屼絾鏄绛栫暐澶勭悊 缁х画銆/Logoff 寮曡捣娉ㄩ攒鍦ㄧ粍绛栫暐璁剧疆 琚鍒锋柊钖庛傝繖鏄涓嫔垪镓闇瑕佺殑: 闾d簺缁勭瓥鐣ュ㈡埛鏂规墿灞 闾d簺涓嶅勭悊绛栫暐鍦ㄥ悗鍙 鍒锋柊锻ㄦ湡浣嗘槸澶勭悊绛栫暐褰扑竴涓 鐢ㄦ埛锏诲綍銆备緥濡傦纴浠ョ敤鎴蜂负鐩镙囩殑 杞浠跺畨瑁呭拰鏂囦欢澶归吨鏂板畾钖戙 姝ら夐”镞犳晥锛屽傛灉娌℃湁 璋幂敤镄勬墿灞曢渶瑕佷竴涓娉ㄩ攒銆/Boot 锲犲叾閲嶆柊钖锷ㄥ啀缁勭瓥鐣ヨ剧疆 琚鍒锋柊銆傝繖鏄闇瑕佺殑瀵逛笅鍒 缁勭瓥鐣ュ㈡埛鏂规墿灞 涓嶉渶瑕佹寜钖庡彴鍒锋柊锻ㄦ湡澶勭悊绛栫暐 浣嗘槸鍦ㄨ$畻链哄惎锷ㄦ椂澶勭悊绛栫暐銆 渚嫔备互璁$畻链轰负鐩镙囩殑杞浠 瀹夎呫傛ら夐”镞犳晥锛屽傛灉 ......>>
Python 标准库中的 argparse 可以根据程序中的定义,从 sys.argv 中解析参数,并且自动生成帮助信息。
使用 add_argument 方法为应用程序添加参数,其中 add_argument 方法的参数比较多,这也使得 argparse 库的使用不够简洁,后续将继续为大家介绍更好用的命令行参数解析的开源库 click 。
下面是 add_argument 方法的参数及含义总结:
解析参数需要使用 ArgumentParser 实例的 parse_args 方法,此方法返回一个 NameSpace 对象;可以通过访问 NameSpace 对象属性的方式获取参数值。
下面是一个简单的例子:通过 parser.server 获取 --host 选项的值,通过 parse.boolean_switch 获取 -t 选项的值。
查看帮助信息:
参数默认值:
指定参数:
打印帮助信息:
打印版本信息:
传递参数:
⑶ Python笔记:命令行参数解析
有些时候我们需要通过命令行将参数传递给脚本,C语言中有个getopt()方法,python中也有个类似的命令行参数解析方法getopt()。python也提供了比getopt()更简洁的argparse方法。另外,sys模块也可以实现简单的参数解析,本文将对这3种命令行参数解析方法简要介绍。
sys.argv是传入的参数列表,sys.argv[0]是当前python脚本的名称,sys.argv[1]表示第一个参数,以此类推。
命令行运行:
可以看到传入的参数通过sys.argv来获取,它就是一个参数列表。
python的getopt与C语言的的getopt()函数类似。相比于sys模块,支持长参数和短参数,并对参数解析赋值。但它需要结合sys模块进行参数解析,语法格式如下:
短参数为单个英文字母,如果必须赋值需要在后面加英文冒号( : ),长参数一般为字符串(相比短参数,更能说明参数含义),如果必须赋值需要在后面加等号( = )。
命令行运行:
注意:短参数(options)和长参数(long_options)不需要一一对应,可以任意顺序,也可以只有短参数或者只有长参数。
argparse模块提供了很多可以设置的参数,例如参数的默认值,帮助消息,参数的数据类型等。argparse类主要包括ArgumentParser、add_argument和parse_args三个方法。
下面介绍这三个函数的使用方法。
argparse默认提供了 -h | --help 参数:
命令行运行:
下面列出部分参数:
下面来添加参数:
命令行运行:
parse_args() 方法用于解析参数,在前面的示例代码中使用parse_args方法来提取参数值,对于无效或者错误的参数会打印错误信息和帮助信息:
命令行运行:
本文介绍了Python的三种命令行参数解析方法sys.argv、getopt和argparse,可以根据自己的需要进行选择,getopt和argparse两种方法相比来说,建议选择argparse,代码量更少更简洁。更详细的使用方法参考官方文档:
--THE END--