美文网首页Python
Python3脚本传参实战(2个方法3个传参列表的案例)

Python3脚本传参实战(2个方法3个传参列表的案例)

作者: robot_test_boy | 来源:发表于2021-12-08 00:09 被阅读0次

    在一些测试平台对接时或者用例执行时,或多或少会用到Python脚本传参的问题。

    方法1:sys.argv[i]

    test.py脚本

    #!/usr/bin/python3

    import sys

    print ('参数个数为:', len(sys.argv), '个参数。')

    print ('参数列表:', str(sys.argv))

    print ('脚本名:', str(sys.argv[0]))

    print ('第一个参数:', sys.argv[1])

    执行python3 test.py arg1 arg2 arg3

    参数个数为: 4 个参数。

    参数列表: ['test.py', 'arg1', 'arg2', 'arg3']

    脚本名: test.py

    第一个参数: arg1

    方法2:内置argparse

    test.py脚本

    #!/usr/bin/python3

    import argparse

    # 生成了一个命令行参数的对象

    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()

    print (args.year,  args.name, args.body)

    查看帮助python3 test.py --help

    usage: test.py [-h] [--name NAME] [--year YEAR] --body BODY

    Test for argparse

    optional arguments:

      -h, --help  show this help message and exit

      --name或-n NAME  name属性,非必要参数

      --year或-y YEAR  year属性,非必要参数,但有默认值

      --body或-b BODY  body 属性,必要参数

    执行python3 test.py --year 2021 -n robot  --body "are you ok?"

    2021 robot are you ok?

    案例1:argparse传入一个列表

    以方法2中的test.py脚本为例

    python3 test.py --year 2021 --body [\"test\", \"robot\",\"boy\" ]

    2021 ["test", "robot", "boy" ]

    案例2:sys.argv[i]传入一个列表

    以方法1中的test.py脚本为例

    python3 test.py [\"test\", \"robot\",\"boy\" ]

    参数个数为: 2个参数。

    参数列表: ['test.py', '[\"test\", \"robot\", \"boy\" ]']

    脚本名: test.py

    第一个参数: ["test", "robot", "boy" ]

    其实此时传入的第一个参数是一个字符,需要转换为列表。

    import json

    json.loads(sys.argv[1])

    案例3:argparse和sys.argv[i]组合传参一个列表

    test_arg.py脚本

    #!/usr/bin/python3

    import argparse

    import os

    # 生成了一个命令行参数的对象

    parser = argparse.ArgumentParser(description='Test for argparse')

    parser.add_argument('--body', '-b', help='body属性,必要参数', required=True)

    args = parser.parse_args()

    print (args.body)

    command=python3 + '  ' + test_sys.py+ '  '  + args.body

    print (command)

    str=('command')

    result=os.system(str)

    test_sys.py脚本

    #!/usr/bin/python3

    import sys

    import json

    print ('第一个参数:', sys.argv[1])

    print ('列表:', json.loads(sys.argv[1]))

    执行python3 test_arg.py --body  [\"test\", \"robot\",\"boy\" ]

    python3  test_sys.py  ["test", "robot", "boy" ]

    test_sys.py执行报错,转json失败。

    还记得我们案例2中,脚本的传入指定参数和实际传入参数嘛?

    test_arg.py脚本我们稍微优化下,在传参前先字符替换下。

    ["test", "robot", "boy" ]转换为[\"test\", \"robot\",\"boy\" ]即可。

    command.replace(' " ' , r ' \" ') 添加到command=之后,再次运行看看呢?

    相关文章

      网友评论

        本文标题:Python3脚本传参实战(2个方法3个传参列表的案例)

        本文链接:https://www.haomeiwen.com/subject/kwunxrtx.html