2016-02-12 236 views
4

我一直在尋找方法來將參數值添加到腳本,當我從命令行運行它。我發現這兩個包似乎是這樣做的是sys.argv和argparse。Python sys.argv和argparse

我也希望能夠添加某種幫助功能,如果可能的話。

有人可以解釋兩者之間的區別,也許有人會更容易開始?

+1

'sys.argv'不是一個包。你會使用'argparse'。 – vaultah

+1

'sys.argv'是一個參數列表。 'argparse'是一個包來幫助你處理參數(包括添加'--help'參數)。 – khelwood

+1

'sys.argv'是從命令行派生的字符串列表。 'argparse'可以讓你創建一個解析器來解碼'sys.argv'。對於簡單的情況,你可以直接使用'sys.argv'。 – hpaulj

回答

9

sys.argv只是命令行參數的列表。

argparse是一個全功能的命令行解析器一般解析sys.argv,給你回的數據在一個非常容易使用的方式。

如果您做的任何事情比接受一些必需的位置參數的腳本更復雜,那麼您將需要使用解析器。根據您的python版本,python標準庫中有3個可用(getopt,optparse和​​),而​​是迄今爲止最好的。

+0

我很好奇,是getopt從perl的模塊getopt相同? – Seekheart

+0

@ Seekheart或多或少。 'getopt'是解析命令行選項的標準POSIX庫,許多語言提供了一個包裝或實現。 Python模塊主要是爲了便於從使用它的其他語言移植代碼,而不是用於新代碼。 – chepner

+0

這正是我所尋找的。謝謝! –

2

我建議你爲命令行參數使用argparse有兩個原因。如文檔中指出的那樣,製作arg非常簡單,其次是因爲您需要幫助函數argparse免費提供它。

文檔:https://docs.python.org/2/howto/argparse.html

讓我知道如果你需要更多的幫助。