⑴ 鍛戒護琛屽弬鏁版槸浠涔
闂棰樹竴錛歝璇璦涔犻橈紝鎴戝畬鍏ㄦ病澶寸華錛屽懡浠よ屽弬鏁版槸浠涔堜笢瑗垮晩錛燂紵 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--