Python——命令行传参
Python 提供了 getopt 模块来获取命令行参数,也可以使用 sys 的 sys.argv 来获取命令行参数。本文介绍2种方式进行命令行传参。
1、sys.argv传参——初级
- sys.argv 是命令行参数列表。
- len(sys.argv) 是命令行参数个数。
注:sys.argv[0] 表示脚本名。
- #!/usr/bin/python
- # -*- coding: UTF-8 -*-
-
- import sys
-
- print('参数个数为:', len(sys.argv), '个参数。')
- print('参数列表:', str(sys.argv))
运行结果
- $ python test.py arg1 arg2 arg3
- 参数个数为: 4 个参数。
- 参数列表: ['test.py', 'arg1', 'arg2', 'arg3']
sys.argv:以列表的方式获取运行 Python 程序的命令行参数存放其中。其中 sys.argv[0] 通常就是指该 Python程序本身,sys.argv[1] 代表第一个参数,sys.argv[2] 代表第二个参数,以此类推。类似于 Shell 中的 $0、$1、$2
2、argparse传参——高级
argparse的使用可以简化为以下四个步骤:
- A. import argparse # 在python文件中先导入该模块
- B. parser = argparse.ArgumentParser() # 创建一个解析对象
- C. parser.add_argument() # 添加该解析对象中的参数和对应的命令表示
- D. parser.parse_args() # 调用解析方法
demo如下:
- import argparse
- import time
-
-
- def parse_args():
- description = "你正在学习如何使用argparse模块进行命令行传参..."
- parser = argparse.ArgumentParser(description=description)
- parser.add_argument("-t", "--time", type=str, default=time.strftime("%Y%m%d", time.localtime()), help="%Y%m%d格式的时间")
- parser.add_argument("--query", type=str, default="welcome to argparse!", help="传入的文本")
- return parser.parse_args()
-
-
- if __name__ == "__main__":
- args = parse_args()
- print(args)
- print(type(args))
- print(args.time, args.query)
运行结果:
- Namespace(query='welcome to argparse!', time='20210612')
- <class 'argparse.Namespace'>
- 20210612 welcome to argparse!
命令行运行结果
- $ python parse.py -h
- Namespace(query='welcome to argparse!', time='20210612')
- <class 'argparse.Namespace'>
- 20210612 welcome to argparse!
-
-
- $ python parse.py
- Namespace(query='welcome to argparse!', time='20210612')
- <class 'argparse.Namespace'>
- 20210612 welcome to argparse!
-
-
- $ python parse.py -t 20210610 --query 我想吃饭
- Namespace(query='我想吃饭', time='20210610')
- <class 'argparse.Namespace'>
- 20210610 我想吃饭