作者|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/