用Python 3编写的Python 3代码生成器

2023-05-16

目录

介绍

使用代码

关于create_python_prog.py

关于variable_name

关于parameter_type

关于parameter_count_token

关于parameter_switches

有关布尔参数的其他信息

示例命令行

附录

兴趣点


  • 下载源代码 - 10.2 KB

介绍

此程序生成解析命令行参数并显示输入值的Python 3程序。该程序的目的是允许快速创建Python 3程序的解析代码和帮助文本。

如果我更新此内容,我将再次上传并更改版本号,当前为1.1.1

使用代码

用法:

python create_python_prog.py <program_name> [parameter 1] [parameter 2} ... [parameter N]

python create_python_prog.py [-h | --help]

关于create_python_prog.py

此程序生成解析命令行参数并显示输入值的Python 3程序。该程序的目的是允许快速创建Python 3程序的解析代码和帮助文本。

传递给此程序的参数指定生成的程序名称和生成的程序参数的创建。

每个参数都是一个逗号分隔的列表,其格式为:

<variable_name[=initial_value]>[,parameter_type][,parameter_count_token]
[,-one_char_switch][,--long_switch]

变量名称是必需的,并且必须是第一个。可选parameter_type、可选parameter_count_token和可选parameter_switch或开关可以按任意顺序排列。

只需要变量名称。所有其他项目都是可选的。

参数开关必须以一个或两个连字符('-')字符开头。只能为可选参数指定初始值。可选参数包括开关参数和parameter_count_token等于?*的位置参数。

关于variable_name

变量名称必须以英文字母表中的字母开头。变量名称的其余部分可能包含英文字母、数字或下划线字符“_”

如果stringinitial_value包含空格字符,则必须用双引号字符分隔初始值。

布尔参数的唯一有效默认值是FalseTrue

关于parameter_type

parameter_type说明符可以是以下字符之一。如果没有为每种类型指定initial_value,则使用指示的初始值默认值。

  • sstr——参数,默认为空字符串,或 ''。string
  • iint——整数参数,默认为0
  • ffloat——浮点参数,默认为0.0
  • bbool——布尔参数,默认为False。布尔参数必须是可选参数,即使用以连字符开头的开关控制的参数。

如果未指定parameter_type,则parameter_type默认为string参数。

关于parameter_count_token

可选的计数标记控制指定参数类型接受的参数数。如果数字不止一个,则由给定名称指定的变量将是一个Python列表。这个最后一个可选计数参数在参数分析器代码中用作'nargs'。该nargs参数通常是以下参数之一:

  • *——接受0个或多个参数类型
  • +——接受1个或多个参数类型
  • ?——参数是可选的
  • [大于零的正整数]——接受指定数量的参数,例如2

如果未指定parameter_count_token,则在运行时,仅在命令行中为该参数输入一个值。如果parameter_count_token表示多个值,则variable_name标识一个Python列表实例,并且输入的每个值都将通过生成的解析代码添加到列表中。

关于parameter_switches

初始连字符表示parameter_switch。单个连字符表示单个字符的开关名称。两个初始连字符指定长名称开关。

可以同时指定短名称开关和长名称开关。

-h--help开关是自动实现的,不应指定为switch参数。运行生成的程序时,使用任一帮助开关都会导致在生成的程序开始时输出__doc__string

有关布尔参数的其他信息

带有parameter_typebbool的布尔参数只能是可选switch参数。在生成的程序中对布尔参数使用switch会导致布尔参数的变量名设置为与initial_value相反的值。如果未指定初始值,则布尔参数的缺省值为False

示例命令行

python create_python_prog.py foo alpha,i beta,f,+ file_name gamma,b,-g,--gma

此命令行生成一个名为'foo.py'的程序,该程序采用名为'alpha'的整数参数和一个或多个位于名为'beta'的列表中的浮点参数,然后是一个名为file_namestring参数,最后是一个名为'gamma'的可选参数,该参数是一个布尔值,如果指定了'-g'开关或'--gma'开关,则该值仅为'True'

python create_python_prog.py foo file_name='bar.txt',?

命令行中的?字符使file_name参数成为可选参数。如果未指定参数,则变量'file_name'设置为'bar.txt'

附录

生成的代码使用Python的参数解析器模块。若要添加参数,请使用Add_argument方法。不使用Add_mutually_exclusive_groupSubparsers方法。如果需要,修改生成的代码以使用这些附加方法相对容易。

下面是使用以下命令创建的示例生成程序:

python create_python_prog.py foo.py text_desc amount,i value=0.5,f,? maxval,
f,-m,--max display_flag,b,-d,--disp

这是生成的Python 3程序。

#!/usr/bin/env python
"""
    python foo.py <text_desc> <amount> [value] [-m <maxval> | --max <maxval>]
                  [-d <display_flag> | --disp <display_flag>]

    python foo.py [-h | --help]

    TODO: Add usage information here.
"""
import sys
# TODO: Uncomment or add imports here.
#import os
#import re
#import time
#import urllib
#import subprocess
from argparse import ArgumentParser

def foo_main(text_desc, amount, value, maxval, display_flag):
    """ TODO: Add docstring here. """
    # TODO: Add or delete code here.
    # Dump all passed argument values.
    print(f"{text_desc=}")
    print(f"{amount=}")
    print(f"{value=}")
    print(f"{maxval=}")
    print(f"{display_flag=}")
    return 0

# Start of main program.
def main(argv=None):
    # Initialize the command line parser.
    parser = ArgumentParser(description='TODO: Text to display before the argument help.',
                            epilog=f'Copyright (c) 2022 TODO: your-name-here.',
                            add_help=True,
                            argument_default=None, # Global argument default
                            usage=__doc__)
    parser.add_argument(action='store', dest='text_desc', \
                        help='A string value that TODO:')
    parser.add_argument(action='store', dest='amount', \
                        type=int, help='A integer value that TODO:')
    parser.add_argument(action='store', dest='value', \
    type=float, default=0.5, nargs='?', help='A floating point value that TODO:')
    parser.add_argument('-m', '--max', action='store', dest='maxval', \
    type=float, default=0.0, help='A floating point value that TODO:')
    parser.add_argument('-d', '--disp', action='store_true', \
    dest='display_flag', default=False, help='A Boolean value that TODO:')
    # Parse the command line.
    arguments = parser.parse_args(args=argv)
    text_desc = arguments.text_desc
    amount = arguments.amount
    value = arguments.value
    maxval = arguments.maxval
    display_flag = arguments.display_flag
    status = 0
    try:
        foo_main(text_desc, amount, value, maxval, display_flag)
    except ValueError as value_error:
        print(value_error)
        status = -1
    except OSError as os_error:
        print(os_error)
        status = -1
    except MemoryError as mem_error:
        print(mem_error)
        status = -1
    return status

if __name__ == "__main__":
    sys.exit(main())

这是上面显示的生成程序的帮助输出:

python foo.py -h
usage:
python foo.py <text_desc> <amount> [value] [-m <maxval> | --max <maxval>]
[-d <display_flag> | --disp <display_flag>]

 python foo.py [-h | --help]

 TODO: Add usage information here.

 TODO: Text to display before the argument help.

positional arguments:
text_desc     A string value that TODO:
amount        A integer value that TODO:
value         A floating point value that TODO: 

options:
-h, --help    show this help message and exit
-m MAXVAL, --max MAXVAL A floating point value that TODO:
-d, --disp   A Boolean value that TODO:

Copyright (c) 2022 TODO: your-name-here.

兴趣点

通常想要打印变量名称和值,例如:

some_variable='variable_value'

Python 3.8及更高版本通过在变量名后添加一个等号(即=)使使用f-string变得非常容易。
上面的输出打印有以下行。这适用于字符串、整数、浮点数和布尔变量。

print(f"{some_variable=}")

如果您使用的是Python 3.8之前的早期版本,则必须将上面的行更改为:

print(f"some_variable={some_variable}")

我相信这是早期版本的Python 3.x必须更改的唯一功能。

https://www.codeproject.com/Articles/5346694/Python-3-Code-Generator-Written-in-Python-3

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用Python 3编写的Python 3代码生成器 的相关文章

随机推荐

  • 第十一章、远程联机服务器SSH / XDMCP / VNC / RDP

    维护网络服务器最简单的方式不是跑去实体服务器前面登入 xff0c 而是透过远程联机服务器联机功能来登入主机 xff0c 然后再来进行其他有的没的维护就是了 Linux 主机几乎都会提供 sshd 这个联机服务 xff0c 而且这个服务还是主
  • 如何查看电脑jdk/jre版本以及安装路径

    一 按快捷键win 43 r打开运行窗口 二 输入cmd 回车 xff0c 打开命令框 三 输入 java version 查看jdk版本 注意 xff1a java后面需要有空格 xff0c 不然会报错 java span class t
  • AndroidID、IMEI、OAID获取

    前言 因为项目中经常会遇到要上传一系列设备信息的功能 xff0c 为了方便使用 xff0c 所以就拆分成以下系列文章来单独介绍如何获取各类设备信息 手机运营商获取 AndroidID IMEI OAID获取 地理位置信息经纬度获取 公网IP
  • (二)裸机汇编--点亮LED

    目标 xff1a 点亮LED 1 查数据手册 硬件图中 xff0c 找到LED灯对应的GPIO 从二极管方向看出 xff0c 端口输出低电平时 xff0c 电流经过 xff0c LED点亮 再到数据手册查找对应的寄存器 GPBCON xff
  • Excel中将十六进制字符串转换为汉字的方法

    比如十六进制字符串 D0C2BDAE 转换方法是 在公式里面输入 61 CHAR HEX2DEC LEFT C6 4 amp CHAR HEX2DEC MID C6 5 4 其中C6 是十六进制所在的单元格 xff0c 原理很简单 xff0
  • C - 班长竞选(Kosaraju算法

    题意 xff1a input 本题有多组数据 第一行 T 表示数据组数 每组数据开始有两个整数 N 和 M 2 lt 61 n lt 61 5000 0 lt m lt 61 30000 xff0c 接下来有 M 行包含两个整数 A 和 B
  • debian 11安装pip

    安装curl sudo apt get install curl下载文件get pip py curl https bootstrap pypa io get pip py o get pip py安装依赖python3 distutils
  • Linux运行jar包报错:Error:Invalid or corrupt jarfile xxx.jar

    各种查找 xff0c 没有对症的 xff0c 最后仔细查看信息提示发现是自己大意造成的 xff0c 原因是服务器空间不足导致保存传递过来的jar包不完整导致的 巨坑 xff01 怪自己不够仔细
  • [HPM] Error occurred while trying to proxy request /login/account from localhost:8000 to localhost:8

    HPM Error occurred while trying to proxy request login account from localhost 8000 to localhost 8888 api ENOTFOUND https
  • Unable to perform this action because the process is running.

    总感觉会有小伙伴和我一样纠结吧 我在使用vs code的时候想用调试控制台输入输出 xff0c 结果在输入的时候遇到了这个问题 xff0c 为什么呢 xff0c 我也不知道 xff0c 但是有一个是明确的 xff0c 就是调试控制台不可以作
  • VS Code 翻译插件

    translate var 使用翻译api将其他语言到英文 转换成常见的变量命名形式 Automatically translate words into English variable name Keybindings win 34 A
  • 从ASP.NET Core 3.1中的当前URL获取主机信息

    目录 介绍 问题陈述 解决方案 介绍 在处理 Web 应用程序时 xff0c 很自然 xff0c 我们需要在产品生命周期的各个阶段在各种环境 xff08 即开发 xff0c 测试 xff0c 生产等 xff09 之间切换 换句话说 xff0
  • ONNX系列六 --- 在Java中使用可移植的ONNX AI模型

    目录 安装和导入ONNX运行时 载入ONNX模型 使用ONNX运行时进行预测 摘要和后续步骤 参考文献 下载源547 1 KB 系列文章列表如下 xff1a ONNX系列一 带有ONNX的便携式神经网络 ONNX系列二 使用ONNX使Ker
  • 绒毛动物探测器:通过TensorFlow.js中的迁移学习识别浏览器中的自定义对象

    目录 起点 MobileNet v1体系结构上的迁移学习 修改模型 训练新模式 运行物体识别 终点线 下一步是什么 xff1f 我们可以检测到脸部吗 xff1f 下载TensorFlowJS Examples master zip 6 1
  • YOLOv7 在 ML.NET 中使用 ONNX 检测对象

    目录 什么是 YOLO ONNX 模型 执行预测 示例和参考 References 什么是 YOLO YOLO xff08 You Only Look Once xff09 是一种先进的实时目标检测系统 它是一个在COCO数据集上预训练的物
  • 如何转换PyTorch模型并使用OpenVINO™工具包运行它

    注意 xff1a 本文是使用 OpenVINO 2022 1 创建的 如果您想知道如何使用 OpenVINO 2021 4 的旧 API xff0c 请查看 此notebook 尽管 PyTorch 是 AI 训练的绝佳框架 xff0c 可
  • 程序设计思维与实践 Week14 作业

    A Q老师与石头剪刀布 题意 xff1a 每一个大人曾经都是一个小孩 xff0c Q老师 也一样 为了回忆童年 xff0c Q老师 和 Monika 玩起了石头剪刀布的游戏 xff0c 游戏一共 n 轮 无所不知的 Q老师 知道每一轮 Mo
  • 高可用:MongoDB 容器部署

    MongoDB 是一款 NoSQL 数据 xff0c 通常用来存储非结构化数据 xff0c 我们的产品中也有用到 xff0c 例如 xff1a 一些文件存储在 MongoDB 的 GridFS 中 MongoDB 有三种方式来实现高可用 x
  • 在C#语言中监视SQL Server中的实时数据库更改

    目录 介绍 介绍 在本文中 xff0c 我想向您解释如何在不需要 SQL 依赖和服务代理的情况下监视数据库 有许多方法可以监视数据库更改 xff0c 其中一种方法是 SQL 依赖和服务代理 xff0c 但是在本教程中 xff0c 我们将不使
  • 用Python 3编写的Python 3代码生成器

    目录 介绍 使用代码 关于create python prog py 关于variable name 关于parameter type 关于parameter count token 关于parameter switches 有关布尔参数的