作者|Dardan Xhymshiti
編譯|VK
來源|Towards Data Science
1.sys模塊
Python中的sys模塊具有argv功能,當通過終端觸發main.py的執行時,此功能回傳所有命令列引數的串列,回傳串列中的第一個元素是main.py.
考慮下面的main.py示例
import sys
list_of_arguments = sys.argv
print(list_of_args[0])
print(list_of_args[1])
print(list_of_args[2])
print(list_of_args[3])
觸發main.py:
python main.py first_arg "[second_arg]" "{\"arg\": 3}"
回傳:
test.py
first_arg
[second_arg]
{"arg": 3}
2.帶有大引數的sys模塊
這是一種為Python代碼提供引數的簡單又強大的方法,它不是提供提供多個引數,而是提供單個“大”引數,這一個大引數是一個字典,鍵表示引數名,值表示它們的對應值,
由于在Python中讀取時,dictionary引數被表示為字串,因此應該將其轉換為字典,這可以通過使用ast.literal_eval或者json.loads函式做到,ast或json模塊需要相應地匯入,
考慮下面的main.py示例:
import sys
import ast
raw_arguments = sys.argv[1]
print(raw_arguments)
arguments = ast.literal_eval(raw_arguments)
print(arguments['name']) # John
print(arguments['surname']) # Doe
print(arguments['age']) # 22
觸發mian.py:
python main.py "{\"name\": \"John\", \"surname\": \"Doe\", \"age\": 22}"
回傳:
{"name": "John", "surname": "Doe", "age": 22}
John
Doe
22
3.argparse模塊
如果你想為應用程式提供適當的命令列界面,那么argparse就是要使用的模塊,這是一個成熟的模塊,提供開箱即用的引數決議、幫助訊息以及引數被誤用時會自動拋出錯誤,Python默認安裝此模塊,
要充分利用argparse提供的功能,需要一些時間來掌握,作為一個示例,考慮以下示例main.py:
import argparse
parser = argparse.ArgumentParser(description='Personal information')
parser.add_argument('--name', dest='name', type=str, help='Name of the candidate')
parser.add_argument('--surname', dest='surname', type=str, help='Surname of the candidate')
parser.add_argument('--age', dest='age', type=int, help='Age of the candidate')
args = parser.parse_args()
print(args.name)
print(args.surname)
print(args.age)
初始化ArgumentParses的物件后,我們使用add_argument函式添加所有引數,此函式接收許多引數,其中包括引數名稱(例如--name)、目標變數、預期資料型別、要顯示的幫助訊息等,
觸發main.py:
python main.py --name John --surname Doe --age 22
回傳
John
Doe
22
要了解有關此模塊的更多資訊,請查看argparse檔案:https://docs.python.org/2/library/argparse.html
結論
很多時候,你需要向Python腳本傳遞引數,Python通過sys模塊提供對這些引數的訪問,你可以直接訪問argv并處理自己的引數決議,也可以使用其他模塊例如argparse為你完成這項作業,
在我的日常編程生活中,如果我是代碼的唯一用戶,我會使用sys時;如果這代碼準備用于生產時,我會使用argparse,
原文鏈接:https://towardsdatascience.com/3-ways-to-handle-args-in-python-47216827831a
歡迎關注磐創AI博客站:
http://panchuang.net/
sklearn機器學習中文官方檔案:
http://sklearn123.com/
歡迎關注磐創博客資源匯總站:
http://docs.panchuang.net/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/720.html
標籤:其他
上一篇:用Python檢測人臉特征
下一篇:自訓練和半監督學習介紹
