命令行參數指的是在執行腳本程序時所附加的參數,Python提供了sys模塊和argparse模塊來處理命令行參數。本篇文章將介紹Python中命令行參數的獲取和使用方式。
一、sys模塊
sys模塊是Python的內置模塊之一,該模塊提供了與Python解釋器和它所處的環境有關的函數和變數,其中一個重要的變數是sys.argv。該變數是一個列表,包含了命令行參數以及腳本文件名稱。
import sys print("命令行參數列表:", sys.argv) print("腳本文件名稱:", sys.argv[0]) print("第一個命令行參數:", sys.argv[1])
上面的代碼將會輸出傳入的命令行參數以及文件名,如果沒有傳入命令行參數,sys.argv數組將只包含腳本文件名。
二、argparse模塊
argparse模塊是Python自帶的一個解析命令行參數的模塊。通過使用argparse可以更好的處理命令行參數,包括設置參數名稱、參數解釋、參數類型、參數數量等。
在使用argparse模塊之前,需要首先定義一個ArgumentParser對象,並可以設置一些參數,如下所示:
import argparse parser = argparse.ArgumentParser(description='命令行參數示例') parser.add_argument('-n', '--number', type=int, default=1, help='重複次數') parser.add_argument('-v', '--verbose', action='store_true', help='輸出詳細信息') args = parser.parse_args() print(args.number) print(args.verbose)
上面的代碼定義了兩個參數:number和verbose,其中number是一個整型參數(type=int),默認值為1(default=1),help用於指定該參數的解釋。而verbose是bool類型參數,如果該參數被賦值,值為True(action=’store_true’),表示需要輸出詳細信息。parse_args()方法用於解析命令行參數,將解析結果保存在args變數中。最後輸出args的number和verbose屬性的值。
三、主函數
在編寫Python腳本程序時,為了能夠更好的組織代碼,通常會將一些程序邏輯封裝到一個main函數中。利用命令行參數調用這個函數可以處理更多的情況。下面是一個簡單的示例:
import argparse def main(number, verbose): for i in range(number): if verbose: print("第%s次列印Hello world" % (i+1)) else: print("Hello world") if __name__ == '__main__': parser = argparse.ArgumentParser(description='命令行參數示例') parser.add_argument('-n', '--number', type=int, default=1, help='重複次數') parser.add_argument('-v', '--verbose', action='store_true', help='輸出詳細信息') args = parser.parse_args() main(args.number, args.verbose)
上面的代碼定義了一個main函數,其中輸出重讀次數與是否輸出詳細信息由命令行參數控制。在main函數中使用for循環輸出「Hello world」字元串。如果verbose參數為True,則在輸出Hello world字元串之前先輸出第幾次輸出。
在代碼的末尾,判斷腳本作為程序運行時(而不是作為導入模塊運行時)才運行main函數,這是一個約定成俗的方式。
四、總結
Python提供了sys模塊和argparse模塊來處理命令行參數。sys.argv變數可以獲取命令行參數,但對參數解析相對比較簡單且不夠靈活。argparse模塊能夠更好的解析命令行參數,並允許指定參數名稱、參數解釋、參數類型、參數數量等,不過需要編寫一些額外的代碼對命令行參數進行解析。主函數中使用命令行參數可以方便地將一些程序邏輯封裝起來。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/306390.html