在命令行程序中需要获取命令行参数可以使用sys库和argparse库。sys库可用于处理简单的命令行参数,argparse库可用于处理复杂的命令行参数。
# argparse 解析命令行参数
import argparse, sys
def main():
# 定义一个ArgumentParser实例:参数分别为程序名、描述、说明信息
parser = argparse.ArgumentParser(prog="test", description="test", epilog="version 1.01")
# 定义位置参数,help指定帮助信息:
parser.add_argument("path", help="路径")
# 定义关键字参数:
parser.add_argument("--host", default="localhost")
# type指定参数必须为int类型,default指定参数可缺省,缺省时值为3306:
parser.add_argument("--port", default="3306", type=int)
# 此参数允许用户输入简写,required指定参数必需输入:
parser.add_argument("-u", "--user", required=True)
parser.add_argument("-p", "--password", required=True)
# nargs指定接收的参数个数
parser.add_argument("--lt", type=str, nargs=3)
# choices指定参数值必需为选项中的一个
parser.add_argument("--ch", type=str, choices=["cp", "de"])
# action='store_true'指定参数不跟参数值,出现表示True
parser.add_argument("--st", action="store_true", required=False)
# 解析参数:如果参数有问题,则它打印出错误信息后,结束进程;如果参数是-h,则它打印帮助信息后,结束进程。
args = parser.parse_args()
# 打印参数:
print("argparse parsed args:", args)
if __name__ == "__main__":
print("sys argv:", sys.argv)
main()
py test.py
sys argv: ['learn-argparse.py']
usage: test [-h] [--host HOST] [--port PORT] -u USER -p PASSWORD [--lt LT LT LT] [--ch {cp,de}] [--st] path
test: error: the following arguments are required: path, -u/--user, -p/--password
py test.py -u root -p hello --lt a b c --ch cp /path
sys argv: ['learn-argparse.py', '-u', 'root', '-p', 'hello', '--lt', 'a', 'b', 'c', '--ch', 'cp', '/path']
argparse parsed args: Namespace(path='/path', host='localhost', port=3306, user='root', password='hello', lt=['a', 'b', 'c'], ch='cp', st=False)
py test.py -u root -p hello --lt a b c --ch cp --st /path
sys argv: ['learn-argparse.py', '-u', 'root', '-p', 'hello', '--lt', 'a', 'b', 'c', '--ch', 'cp', '--st', '/path']
argparse parsed args: Namespace(path='/path', host='localhost', port=3306, user='root', password='hello', lt=['a', 'b', 'c'], ch='cp', st=True)
标签:argparse,py,--,parser,参数,命令行,path,python3 From: https://www.cnblogs.com/caroline2016/p/18454505