argparse是python的一個命令列參數解析包,在程式碼需要頻繁修改參數時,方便使用,主要用法就是在命令列輸入自己想要修改的參數。
import argparse def get_parser(): # argparse.ArgumentParser生成argparse对象 description为描述信息,当在命令行输入需要显示帮助信息时,会显示 parser = argparse.ArgumentParser(description="pytorch unet training") # 路径参数设置 help为参数的帮助信息 parser.add_argument("--data_path", default="./", help="DRIVE root") # 预测类别数量 type如果不指定需要输入的是str类型 parser.add_argument("--num_classes", default=1, type=int) # 指定设备使用 parser.add_argument("--device", default="cuda", help="training device") # 指定batch size大小 "-b", "--batch_size"表示两个都可以在命令行使用 parser.add_argument("-b", "--batch_size", default=4, type=int) return parser if __name__ =='__main__': parser = get_parser() args = parser.parse_args() print(args)
如上get_parser()為本文會介紹的一些使用方法,這個python檔案名為python_argparse_test1.py,其中
#parser = argparse.ArgumentParser(description="pytorch unet training")用來建立parser物件
add_argument()用來增加參數
args = parser.parse_args()中parse_args()取得解析的參數
當命令列輸入python python_argparse_test1.py時,印出args取得到的參數得到:
Namespace(batch_size=4, data_path ='./', device='cuda', num_classes=1)
表示這個參數解析器解析到的參數清單
輸入python python_argparse_test1.py -h或者python python_argparse_test1.py --help顯示信息,其中usage顯示了它的用法,pytorch unet training為創建對象時的description,再下面是各個參數信息與用法
import argparse def get_parser(): # argparse.ArgumentParser生成argparse对象 description为描述信息,当在命令行输入需要显示帮助信息时,会显示 parser = argparse.ArgumentParser(description="pytorch unet training") # 路径参数设置 help为参数的帮助信息 default为默认参数 parser.add_argument("--data_path", default="./", help="DRIVE root") # 预测类别数量 type如果不指定需要输入的是str类型 parser.add_argument("--num_classes", default=1, type=int) # 指定设备使用 parser.add_argument("--device", default="cuda", help="training device") # 指定batch size大小 "-b", "--batch_size"表示两个都可以在命令行使用 parser.add_argument("-b", "--batch_size", default=4, type=int) return parser if __name__ =='__main__': parser = get_parser() args = parser.parse_args() print("data_path: ",args.data_path) print("num_classes: ", args.num_classes)
命令列輸入:python python_argparse_test1.py --data_path Desktop --num_classer 4,得到結果如下:
data_path: Desktop
num_classes: 4
#可以看到透過命令列確實修改了參數
if __name__ =='__main__': parser = get_parser() args = parser.parse_args() print("-b: ",args.b) print("--batch_size: ", args.batch_size)
命令列輸入python python_argparse_test1.py -b 10 --batch_size 20,這時會報錯:
##這是因為當'_'和'__'同時存在時,系統預設後者為參數名稱把上述程式碼改為:if __name__ =='__main__': parser = get_parser() args = parser.parse_args() print("--batch_size: ",args.batch_size)但命令列不受影響,繼續執行指令python python_argparse_test1.py -b 10得到:--batch_size: 105.type的使用type會把輸入的命令列字元強制轉換為type的類型
if __name__ =='__main__': parser = get_parser() args = parser.parse_args() print("--batch_size type: ",type(args.batch_size))命令列輸入:python python_argparse_test1 .py --batch_size '10'得到:--batch_size type:
parser.add_argument("--num_classes", default=1, type=int, required=True)
7.choices選擇參數
parser.add_argument('-arch', required=True, choices=['alexnet', 'vgg'])
##這將會報錯
python_argparse_test1.py: error: argument -
#python_argparse_test1.py: error: argument - arch: invalid choice: 'cnn' (choose from 'alexnet', 'vgg')以上是使用 Python argparse:如何處理命令列參數的詳細內容。更多資訊請關注PHP中文網其他相關文章!