導航:首頁 > 程序命令 > 命令行參數的解析

命令行參數的解析

發布時間:2023-01-04 12:03:10

java怎麼解析命令行參數

用慣了控制台的java程序之後,最印象深刻的是其的簡單與快捷,雖沒有圖形界面那樣吸引人的眼球,但卻也足以迷倒眾生。那麼java命令行參數有哪些呢?跟gkstk小編一起來學習吧!
控制台程序的運行少不了要通過控制台來傳遞參數,譬如:
Sh代碼
ls -la
這是shell腳本的常用命令,其就是通過後置參數來傳遞相關信息。UNIX環境為C語言中提供了getopt()這樣的函數可以解析後置參數,這個函數是很實用很強大的,但Java就...(我Google了一下,倒沒有怎麼找出來)。大概是這個功能對Java來說太不足掛齒了吧,但總得有個解決方法才行。
下面就是一個代碼實例,用以說明。
這個實例運行的結果是運行在控制台,並允許可選的輸入參數:
Sh代碼
java TestOpt -i 89 -b -s TestString
那麼就會設置幾個prarameter的值
Java代碼
public class TestOpt {
public static void main(String[] args) {
/*
* 這里先取默認值,因為不是所有參數都會被用戶提供
*/
boolean prarameter1 = false;
int prarameter2 = 0;
String prarameter3 = "";
/*
* 設置一個offset變數,用來定位相關信息
*/
int optSetting = 0;
for (; optSetting < args.length; optSetting++) {
if ("-b".equals(args[optSetting])) {
prarameter1 = true;
} else if ("-i".equals(args[optSetting])) {
prarameter2 = Integer.parseInt(args[++optSetting]);
} else if ("-s".equals(args[optSetting])) {
prarameter3 = args[++optSetting];
}
}
/*
* 這里我只是列印出來相關的設置信息,具體的行為肯定是要自己取定義打
*/
System.out.println(prarameter1);
System.out.println(prarameter2);
System.out.println(prarameter3);
}
}
這種類似的方法估計應該有很多吧,但這個應該算是比較輕量級的。當然若參數非常多(同時也得進行驗證輸入)

Ⅱ 如何在C++中解析命令行參數

C++內的命令行參數儲存在main函數中的argv參數中 而argc儲存了命令行參數個數 由系統在執行時動態分配

實例:

#include<cstdio>
/*
*argc:命令行參數個數
*argv:儲存了所有命令行參數,其中第一個(即argv[0])為當前可執行文件名
*/
intmain(intargc,char*argv[])
{
inti;
for(i=0;i<argc;i++)
if(argv[i]=="test")
puts("Foundargument'test'");
return0;
}

python語言命令行參數解析接收參數執行腳本的三種方法

在Windows系統上,Python腳本文件當然雙擊就能直接運行。不過我們往往需要在執行腳本的時候還要添加相應的參數,另外在Ubuntu系統中,我們執行文件往往和其他系統或用戶命令一樣,需要在終端中輸入,參數當然也要一並加上。所以機智客這里說的意思是,執行Python腳本(.py文件)時候需要輸入相應參數,這樣程序怎麼寫的方法。

上面這么說可能有點不明不白的,或者有朋友會用但未必知道命令行解析這種表達方式。舉個例子,比如我們在執行一個腳本文件的時候,可能會在CMD或者終端中輸入python demo.py 10或者python demo.py --separator 10後面這個數字就是參數。我們要編寫這樣的腳本或者函數,有哪些方法呢?這里列舉三種常用的。

一個是用系統模塊sys。引入模塊語句是import sys。也就是Python語言的內置庫中的sys.argv。argv通常有argv[0],argv[1],argv[2]這樣幾個參數。基本使用方法是m_sil_len = int(sys.argv[1])傳入第一個參數,sil_th = int(sys.argv[2])傳入第二個參數。如果是簡單一點的參數或者腳本,我們引入了sys。可以直接用這個傳入參數。

一種是用模塊argparse來實現,這是標准庫中推薦的命令行解析模塊。引入模塊語句是import argparse。基本使用方法是引入模塊後,先parser = argparse.ArgumentParser()創建對象,然後調用方法添加參數parser.add_argument("jzk", help="這是關於參數的說明", type=int),之後args = parser.parse_args()使用解析就可以用了。機智客看到這個方法在很多項目腳本中使用。我們在閱讀機器學習AI之類的開源項目,就會發現很多人用的都是這個方法。

還有一個就是用fire模塊,用於生成命令行界面的工具。引入模塊語言是import fire。它默認以-為參數分隔符的。基本使用方法是fire.Fire()。這個不僅可以做命令行的參數解析,還可以還給一個類class添加命令行。所以使用時候括弧里填入函數名或者類名即可,也就是裡面的參數可以是其他Python對象。

Ⅳ 2、cmd命令行參數解析

gojvm目錄
1、搭建go環境
2、cmd命令行參數解析
3、搜索class文件
4、添加testOption 便於單元測試
5、解析classfile文件
6、運行時數據區
7、指令集
8、解釋器
9、創建Class
10、類載入器
11、對象實例化new object
12、方法調用和返回
13 類初始化
14、jvm支持數組
15、jvm支持字元串-數組擴展
16、本地方法調用
17、ClassLoader原理
18、異常處理
19、 啟動jvm

cmd.go

main.go

測試命令 run.sh

go命令

https://github.com/yinlingchaoliu/jvmgo.git
提交標簽 "cmd"

Ⅳ getopts解析命令行參數

getopts 的設計目標是在循環中運行,每次執行循環,getopts 就檢查下一個命令行參數,並判斷它是否合法。即檢查參數是否以 - 開頭,後面跟一個包含在 options 中的字母。

如果是,就把匹配的選項字母存在指定的變數 variable 中,並返回退出狀態0;如果 - 後面的字母沒有包含在 options 中,就在 variable 中存入一個 ,並返回退出狀態0;如果命令行中已經沒有參數,或者下一個參數不以 - 開頭,就返回 不為0 的退出狀態。

如果在需要參數的選項之後沒有找到參數,它就在給定的變數中存入 ? ,並向標准錯誤中寫入錯誤消息。否則將實際參數寫入特殊變數 : OPTARG

另外一個特殊變數: OPTIND ,反映下一個要處理的參數索引,初值是 1,每次執行 getopts 時都會更新。

Ⅵ 【R基礎】R腳本解析命令行參數

#!/usr/bin/Rscript or #!/home/kcao/anaconda3/bin/Rscript

R接受命令的參數有三個常見的方法commandArgs()、getopt()、OptionParser()

其中第一個是R自帶的函數,後面兩個分別來自包getopt和optparse。

這是個R的 內置命令 ,和perl的@ARGV或者和python的sys.argv類似,就是將來自於命令的參數存入向量(數組)中。但是與perl和python的不同,它的前面幾個元素不是命令行的參數,先嘗試列印一下這個參數是怎樣的。

對於參數的位置是可變的,在 R所在路徑 R腳本的路徑 這兩個參數之間是Rscript的參數,這些參數的數量是 可變的. 輸入的參數是從第 6 個開始

這樣一來就會導致R腳本的參數的索引不固定,針對這種情況,你也可以添加一個參數來削掉R腳本參數之前的參數了。

Python模塊學習——optparse

使用之前安裝包

其中的方法OptionParser()的用法為:其中最重要的參數是option_list,這個參數接受一個列表,這個列表是被用來描述命令參數的解析方式的。

運行腳本,查看幫助信息:

查看默認參數:

提供參數值:

Ⅶ 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--

Ⅷ 什麼是命令行參數本人是c++菜鳥

可以通過在程序的main()函數中添加形式參數來接收程序在啟動時從命令行中獲得的各個命令行參數,包括:程序名稱、路徑、當前環境變數和用戶指定參數等。命令行參數由啟動程序截獲並傳遞給main()。

一個典型的命令行例子如:

My srcFile destFile

一個典型的main()例子如:

int main( int argc, char *argv[ ] , char *envp[ ] );

argc

指示數組指針argv中包含的參數個數,該整數總是大於等於1。

argv

一個以NULL以為的字元串數組,存儲用戶輸入的命令行參數。按照慣例,argv[0]為程序調用的命令,如c:\my.exe;argv[1]為第一個命令行參數,直到argv[argc-1];argv[argc]總是NULL。

envp

存儲執行當前程序的用戶環境變數

#include<stdio.h>

int main(int argCount,char * argValue[], char * envp[])

{

FILE* srcFile = 0, *destFile =0;

int ch = 0;

int i = 0;

if (argCount != 3){

printf("Usage:%s src-file-name dest-file-name\n",argValue[0]);

}else{

if((srcFile = fopen(argValue[1],"r")) == 0){

printf("Can not open source file\"%s\"!",argValue[1]);

}else{

if((destFile = fopen(argValue[2],"w")) ==0){

printf("Can not open destination file\"%s\"!",argValue[2]);

}else{

while((ch = fgetc(srcFile))!= EOF) fputc(ch,destFile);

printf("Successful to a file!\n");

fclose(srcFile);

fclose(destFile);

printf("%d command line parameters are got in program \n",argCount);

printf("All command line parameters are list here:\n");

while(envp[i]!=NULL){

printf("%s\n",argValue[i]);

i++;

}

i = 0;

printf("The variable set is list here:\n");

while(envp[i]!=NULL){

printf("%s\n",envp[i]);

i++;

}

return 0;

}

}

}

return 1;

}

Ⅸ Python 命令行(三)- 命令行參數解析

Python 標准庫中的 argparse 可以根據程序中的定義,從 sys.argv 中解析參數,並且自動生成幫助信息。

使用 add_argument 方法為應用程序添加參數,其中 add_argument 方法的參數比較多,這也使得 argparse 庫的使用不夠簡潔,後續將繼續為大家介紹更好用的命令行參數解析的開源庫 click

下面是 add_argument 方法的參數及含義總結:

解析參數需要使用 ArgumentParser 實例的 parse_args 方法,此方法返回一個 NameSpace 對象;可以通過訪問 NameSpace 對象屬性的方式獲取參數值。

下面是一個簡單的例子:通過 parser.server 獲取 --host 選項的值,通過 parse.boolean_switch 獲取 -t 選項的值。

查看幫助信息:

參數默認值:

指定參數:

列印幫助信息:

列印版本信息:

傳遞參數:

Ⅹ 27.Go 解析命令行參數

標准庫中的flag包用於解析命令行參數:

上面的輸出是調用go run $ file -echo echo-arg Additional arg的結果。

定義參數
假設你的程序有一個-retries整數選項。

你可以使用以下標志包注冊此類選項:

還有其他常見類型的功能:

POSIX variant --retries or Windows variant /retries are not recognized.

For boolean values you can say: -help (implicitly true), -help=true or -help=false.

-help false is not a valid form for boolean variables.

Parsing and accessing remaining arguments
After parsing arguments, call flag.Parse().

Parsing fails if:

unknown flag was given on command-line
a flag didn』t parse based on its type (e.g. it was registered as int but the value was not a valid number)
In case of failure, help text describing flags is shown and program exits with error code 2.

You can explicitly print help text using flag.Usage(). This is often triggered by -help flag.

Help text is based on usage text provided in flag.IntVar and others.

Command-line arguments that don』t start with - are untouched and can be accessed with flag.Args().

flag包缺少的功能:
no support for POSIX style --name, only -name is supported
no support for short alternatives e.g. -n being synonym with --name
no suport for Windows style /name

If you need those features, your options are:

access raw cmd-line arguments
use a third party library

If flag package or a third-party library doesn』t provide the features you want, you can parse the arguments yourself.

The above output is a result of go run $file -echo echo-arg additional arg.

Raw command-line arguments can be accessed via []string slice os.Args.

First element is name of the executable.

Remaining elements are cmd-line arguments as decoded by OS shell.

On Windows cmd-line arguments are a single UTF-16 Unicode string.

Go runtime converts them to UTF-8 string and splits into separate arguments to unify handling across different operating systems.

Functionaly provided by standard library package flag is limited.

其他提供了命令行參數解析的庫:

閱讀全文

與命令行參數的解析相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:962
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:144
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:484
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163