Python | 外部参数传递

本文总结从外部传入 python 程序的参数的集中方法。

Updated: 2022 / 9 / 25

Python | 外部参数传递

  • 总览
    • sys
    • argparse
  • 参考链接


总览

常见的是 sys.argv 还有 argparse 1
前者功能比较简单,能提供的有限;后者不是内置的,需要安装,但是功能确实比较强大。


sys


argparse

参考这里 12

此处先给出一个简单的代码示例,如下:

parser = argparse.ArgumentParser(
        prog='WriteJSON',
        description='Writing the input json data to the corresponding .xls template file and save'
    )

    parser.add_argument("-i", "--id", type=str, default="01", help='experiment type number')
    parser.add_argument("-c", "--continue_transfer", type=int, default=0,
                        help="whether to continue to transfer data. value=0 don't transfer, else continue transfer")
    parser.add_argument("-d", "--data", type=str, default=None, help='data with json format')
    parser.add_argument('--version', action='version', version='%(prog)s 1.0')
    args = parser.parse_args()

    id = args.id                                                                                    # 不给也可以 默认"01"
    continue_transfer = args.continue_transfer                                                      # 不给也可以 默认0
    data = args.data                                                                                # 不给也可以,默认None

    print('id', id)
    print('continue_transfer', continue_transfer)
    print('data', data)

运行效果如下:

(base) PyinstallerTest % python script.py -h
usage: WriteJSON [-h] [-i ID] [-c CONTINUE_TRANSFER] [-d DATA] [--version]

Writing the input json data to the corresponding .xls template file and save

optional arguments:
  -h, --help            show this help message and exit
  -i ID, --id ID        experiment type number
  -c CONTINUE_TRANSFER, --continue_transfer CONTINUE_TRANSFER
                        whether to continue to transfer data. value=0 don't transfer, else continue transfer
  -d DATA, --data DATA  data with json format
  --version             show program's version number and exit


(base) PyinstallerTest % python script.py              
id 01
continue_transfer 0
data None


(base) PyinstallerTest % python script.py -i=04
id 04
continue_transfer 0
data None


(base) PyinstallerTest % python script.py --id=04
id 04
continue_transfer 0
data None


(base) PyinstallerTest % python script.py -c=5   
id 01
continue_transfer 5
data None


(base) PyinstallerTest % python script.py -d="whatever"
id 01
continue_transfer 0
data whatever


(base) PyinstallerTest % python script.py --version    
WriteJSON 1.0

使用 argparse 的第一步是创建一个 ArgumentParser 对象 parserArgumentParser 对象包含将命令行解析成 Python 数据类型所需的全部信息。
prog 参数内的名称是程序的名字,如未提前给出则按 python 脚本的名称为默认值。
description 参数内的字符串内容是在参数帮助文档之前显示的文本,

方法如下:

方法 作用
add_argument() 给一个 ArgumentParser 添加程序参数信息是通过调用 add_argument() 方法完成的。通常,这些调用指定 ArgumentParser 如何获取命令行字符串并将其转换为对象。这些信息在 parse_args() 调用时被存储和使用。
可能你会发现有的参数后面都会跟上一个同名参数的大写形式,根据官方文档可知,只需要在每个参数里设置 metavar=' ',那个大写就会消失。
default 表示为该参数的默认值。
help 提供该参数作用的描述性信息。
parse_args() ArgumentParser 通过 parse_args() 方法解析参数。它将检查命令行,把每个参数转换为适当的类型然后调用相应的操作。在大多数情况下,这意味着一个简单的 Namespace 对象将从命令行解析出的属性构。在脚本中,通常 parse_args() 会被不带参数调用,而 ArgumentParser 将自动从 sys.argv 中确定命令行参数

参考链接


  1. argparse — 命令行选项、参数和子命令解析器 ↩︎ ↩︎

  2. python打包含有参数传递的exe程序 ↩︎

你可能感兴趣的:(Python,python,开发语言,pycharm)