做者|Dardan Xhymshiti
編譯|VK
來源|Towards Data Sciencehtml
Python中的sys模塊具備argv功能。當經過終端觸發main.py的執行時,此功能返回全部命令行參數的列表。返回列表中的第一個元素是main.py.python
考慮下面的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:json
python main.py first_arg "[second_arg]" "{\"arg\": 3}"
返回:bash
test.py first_arg [second_arg] {"arg": 3}
這是一種爲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:.net
python main.py "{\"name\": \"John\", \"surname\": \"Doe\", \"age\": 22}"
返回:命令行
{"name": "John", "surname": "Doe", "age": 22} John Doe 22
若是你想爲應用程序提供適當的命令行界面,那麼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/