Python命令行传入参数(cmd2args)

2020-03-29  本文已影响0人  disanda

命令行传入参数

1.sys模块

通过传入sys.argv列表,这里列表元素必须大于等于代码中设定的长度(长了会截断),不然会报错。

import sys

def test_for_sys(year, name, body):
    print('the year is', year)
    print('the name is', name)
    print('the body is', body)

if __name__ == '__main__':
    try:
        year, name, body = sys.argv[1:4]
        test_for_sys(year, name, body)
    except Exception as e:
        print(sys.argv)
        print(e)

2.argparse模块

专门的参数设置模块,功能比上面的多,使用分为如下三步:

1.通过设置一个argparse.ArgumentParser()对象,这里取名为parser

2.为parser对象添加add_argument()方法来设置参数

3.最后通过parser对象的parse_args()方法来重新获得一个可通过属性调用参数的对象,这里取名为args

import argparse
def test_for_sys(year, name, body):
    print('the year is', year)
    print('the name is', name)
    print('the body is', body)
    
parser = argparse.ArgumentParser(description='Test for argparse')
parser.add_argument('--name', '-n', help='name 属性,非必要参数')
parser.add_argument('--year', '-y', help='year 属性,非必要参数,但是有默认值', default=2017)
parser.add_argument('--body', '-b', help='body 属性,必要参数', required=True)
args = parser.parse_args()

if __name__ == '__main__':
    try:
        test_for_sys(args.year, args.name, args.body)
    except Exception as e:
        print(e)

add_arguments的自带属性有:

3.click第三方库

其使用装饰器添加命令行属性,之后直接调用参数名即可

import click

@click.command()
@click.option('--name','-n',default='Leijun',help='name 参数,非必须,有默认值')
@click.option('--year','-y',help='year 参数',type=int)
@click.option('--body','-b',help='body 参数 必填',required=True)
def test_for_sys(year, name, body):
    print('the year is', year)
    print('the name is', name)
    print('the body is', body)

if __name__ == '__main__':
    test_for_sys()

参考:https://tendcode.com/article/python-shell/

上一篇下一篇

猜你喜欢

热点阅读