[TOC]
入门版:sys
编辑:
vim test1.py
1
2
3import sys
print(len(sys.argv))
print(str(sys.argv))运行:
python test1.py 12 34 abc
1
24
['test1.py', '12', '34', 'abc']注:
sys.argv[0]
是PY文件名
进阶版:argparse
- 文档:https://docs.python.org/zh-cn/3/library/argparse.html
编辑:
vim test2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37import argparse
parser = argparse.ArgumentParser(
description='帮助描述信息',
prog='程序显示名称',
usage='顶部显示信息,会覆盖prog',
epilog='底部显示信息') ## 括号里可什么都不写,直接默认
parser.add_argument(
'-bs', # 简称
'--batch-size', # 全称
dest='BatchSize', # 参数解析后换个别名,没有的话,用上面的全称
default='16', # 默认值
type=int, # 参数类型,int float str
help='batch size', # 提示参数含义
required=True, # 表明参数必选,默认False
choices=[16, 32, 64] # 参数值可选范围
)
parser.add_argument(
'-ug', # 简称
'--use-gpu', # 全称
dest='gpu', # 参数解析后换个别名
action='store_true', # 注:可选 store_true, store_false 命令行不加-ug,默认值为 False 和 True
help='use gpu', # 提示参数含义
)
parser.add_argument(
'-lr'
'--learning-rate',
default=0.001,
type=float
)
args = parser.parse_args() ## 命令行参数解析后存放的位置
print(args.__dict__)
print(args.BatchSize)运行:
python test2.py -bs 64
1
2{'BatchSize': 64, 'gpu': False, 'lr__learning_rate': 0.001}
64注:若没有指定简称和全称
-
、--
,参数值以先后定义的顺序注入1
2
3
4
5
6
7
8
9
10import argparse
parser = argparse.ArgumentParser()
parser.add_argument('a')
parser.add_argument('--b')
parser.add_argument('c')
args = parser.parse_args()
print(args.__dict__)
# python test3.py 1 --b 2 3
# {'a': '1', 'b': '2', 'c': '3'}