首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用nargs+和子命令执行argparse

nargs+和子命令是argparse模块中的两个重要概念,用于处理命令行参数和子命令的解析。下面是对这两个概念的详细解释:

  1. nargs+:
    • 概念:nargs+是argparse模块中的一个参数选项,用于指定命令行参数的数量。它表示该参数可以接受多个值,并将这些值存储为一个列表。
    • 优势:使用nargs+可以方便地处理需要接受多个值的参数,而无需提前指定具体的数量。
    • 应用场景:适用于需要接受多个值的参数,例如命令行中的文件列表、URL列表等。
    • 示例代码:import argparse
代码语言:txt
复制
 parser = argparse.ArgumentParser()
代码语言:txt
复制
 parser.add_argument('--files', nargs='+', help='List of files')
代码语言:txt
复制
 args = parser.parse_args()
代码语言:txt
复制
 # 使用示例:python script.py --files file1.txt file2.txt file3.txt
代码语言:txt
复制
 print(args.files)  # 输出:['file1.txt', 'file2.txt', 'file3.txt']
代码语言:txt
复制
 ```
  1. 子命令:
    • 概念:子命令是argparse模块中的一个功能,用于实现命令行程序中的多个子命令,类似于git、docker等命令行工具中的用法。
    • 优势:使用子命令可以将不同的功能模块划分为独立的命令,提高程序的可扩展性和可维护性。
    • 应用场景:适用于需要实现多个功能模块的命令行程序,例如版本管理工具、容器管理工具等。
    • 示例代码:import argparse
代码语言:txt
复制
 parser = argparse.ArgumentParser()
代码语言:txt
复制
 subparsers = parser.add_subparsers(title='subcommands', dest='subcommand')
代码语言:txt
复制
 # 子命令1
代码语言:txt
复制
 subparser1 = subparsers.add_parser('command1', help='Command 1 help')
代码语言:txt
复制
 subparser1.add_argument('--option1', help='Option 1')
代码语言:txt
复制
 # 子命令2
代码语言:txt
复制
 subparser2 = subparsers.add_parser('command2', help='Command 2 help')
代码语言:txt
复制
 subparser2.add_argument('--option2', help='Option 2')
代码语言:txt
复制
 args = parser.parse_args()
代码语言:txt
复制
 if args.subcommand == 'command1':
代码语言:txt
复制
     print('Running command 1 with option:', args.option1)
代码语言:txt
复制
 elif args.subcommand == 'command2':
代码语言:txt
复制
     print('Running command 2 with option:', args.option2)
代码语言:txt
复制
 ```

以上是对nargs+和子命令的解释和示例代码。如果你想了解更多关于argparse模块的信息,可以参考腾讯云的产品文档:argparse模块介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

argparse------用于命令行选项、参数命令的解析器

程序定义了它需要什么参数,argparse将找出如何从sys.argv中解析这些参数。argparse模块还自动生成帮助使用消息,并在用户给程序提供无效参数时发出错误。...这些操作可以对与之关联的命令行参数执行任何操作,尽管大多数操作只是向parse_args()返回的对象添加一个属性。action关键字参数指定应该如何处理命令行参数。...然而,命令行字符串通常应该被解释为另一种类型,比如float或int. add_argument()的type关键字参数允许执行任何必要的类型检查类型转换。...description - 帮助输出中的解析器组的描述,默认情况下为None。 prog - 使用命令帮助将显示的使用信息,默认情况下程序的名称解析器参数之前的任何位置参数。...这些解析器不支持所有argparse特性,如果使用不支持的特性,就会引发异常。特别是解析器argparse。不支持同时包含选项位置的剩余组互斥组。

7K20
  • Linux:如何使用非登录系统用户执行命令

    Linux系统中,管理员经常需要通过一个无法登录shell的系统用户来执行特定的命令。这种需求在管理多用户系统或自动化任务时尤为常见。下面,我们将详细讲解如何实现这一需求,并深入分析其背后的原理。...使用sudo命令 sudo命令是Linux中执行命令的常用工具,它允许授权的用户以其他用户的身份(包括root)执行命令。要让非登录用户执行命令,我们可以使用sudo命令。...执行命令:现在,我们可以使用以下命令格式来以非登录用户身份执行命令: bash sudo -u 3....步骤: 切换用户:使用以下命令格式以非登录用户身份启动bash会话: bash su -s /bin/bash 执行命令:在新启动的bash会话中,我们可以执行任何需要的命令...安全性考虑 使用这些方法时,要特别注意系统的安全性。不恰当地配置sudoers文件可能会导致安全漏洞。始终确保只授权可信用户必要的权限。 5.

    27710

    如何使用presshell在WordPress主机上执行Shell命令

    关于presshell presshell是一款针对WordPress的Shell工具,该工具可以帮助广大研究人员上传Shell文件,并在WordPress服务器/主机上轻松执行Shell命令。...工具下载 广大研究人员可以使用下列命令将该项目源码克隆至本地: git clone https://github.com/scheatkode/presshell.git 工具安装 在安装该工具之前...工具使用 该工具的使用也非常简单,我们可以直接将“sh”命令以参数的形式传递给Shell即可: ❯ curl 'http://host/.../shell.php?...generic-pae #32-Ubuntu SMP Fri Apr 16 09:39:35 UTC 2010 i686 GNU/Linux 当然了,我们也可以将下列参数在POST请求中发送,我们也建议大家使用这种方式来保证命令执行不会被记录到系统日志中...“ip”“port”参数来开启一个方向Shell,默认端口为“443”: ❯ curl 'http://host/...

    57910

    CentOS使用expect批量远程执行脚本命令

    我们有时可能会批量去操作服务器,比如批量在服务器上上传某个文件,安装软件,执行某个命令脚本,重启服务,重启服务器等,如果人工去一台台操作的话会特别繁琐,并浪费人力。...这时我们可以使用expect,向目标服务器上发送指令去实现批量操作。 下面的例子将在centos上将一个文件,批量拷贝到其他服务商上,并执行相应的命令 1....编写expect脚本 copyfilebatch.sh 下面的脚本将向内网IP为 192.168.0.102 至 192.168.0.112 的服务器分别拷贝一个rc.local文件,拷贝成功后,执行chmod...命令,分别重启服务器 #!...*yes/no" { send "yes\r"; exp_continue} "*password:" { send "$password\r" } } expect "#*" #要执行命令

    1.6K31

    如何在 Linux 下 使用 Progress 显示命令执行进度

    Linux 下的命令高效简洁,但同时很多命令进度显示不是很友好,比如:mv、cp、dd 等命令。...在没有进度显示的情况下,我们就无法判断是正在执行、还是执行缓慢,Progress 命令很好的解决了这个问题。 Progress 进度查看器是一个简单的程序,它可用于显示命令的进度。...它使用来自文件描述符的信息来确定命令的进度。Progress 的优点在于它可以与其他 Linux 命令一起使用,比如 watch。...2.1 显示默认支持命令执行进度 单次显示 $ progress 持续显示 $ progress -M 2.2 显示指定命令执行进度 单次显示 $ progress -c ffmpeg 持续显示...你也可以连续使用多个 -c 同时监控多个命令执行进度。

    3.9K60

    如何使用python 执行命令行传入的代码

    提示: exec() 函数支持语句的动态执行。 globals() locals() 函数分别返回当前的全局本地字典,可供传给 eval() 或 exec() 使用。...参见 ast 模块的文档了解如何使用 AST 对象。 filename 实参需要是代码读取的文件名;如果代码不需要从文件中读取,可以传入一些可辨识的值(经常会使用 ‘’)。...如果给出了 flags 参数而未给出 dont_inherit (或者为零) 则会在无论如何都将被使用的旗标之外还会额外使用 flags 参数所指定的编译器选项 future 语句。...: 初始化 code_str=123 print(path) 执行字符串代码 123 命令行输入 并执行 这次我们修改 code_str , 并加入获取命令行参数的sys 模块 # -*- coding...: 注意以下两点: 直接在idea执行的区别,看到了吗,在当前的python 脚本中,上下文保存了字符串中的对象:mytest 特别注意输入命令行参数的时候,要采用python 的语法规则。

    1.7K20

    如何使用PHP SSH2模块执行远程Linux命令

    PHP SSH2扩展是用于在PHP程序中使用SSH(安全壳协议)的一种扩展。它允许建立加密连接执行远程命令、上传下载文件等操作,十分方便实用。...它提供了一组API函数,使开发者可以在自己的应用中实现SSH客户端的功能,如远程执行命令、文件传输端口转发等。...远程执行命令 该扩展最常见的用途之一是在远程服务器上执行命令。...我们通过stream_set_blocking()将流设置为阻塞模式,并使用stream_get_contents()获取流中的所有内容。输出打印为远程命令执行结果。...如果这两个函数中的任何一个出现错误,它将抛出一个失败信息并终止脚本的执行。 总结 PHP SSH2扩展为用户提供了一种简便的方法,在PHP程序中使用SSH进行连接、执行命令、上传下载文件等操作。

    52310

    linux后台执行命令&nohup的具体使用方法

    在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。...如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中: command > out.file 2>&1 & 这样,所有的标准输出错误输出都将被重定向到一个叫做out.file...该命令的一般形式为: nohup command & 如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件: nohup...所以在使用nohup命令后台运行命令之后,需要使用exit正常退出当前账户,这样才能保证命令一直在后台运行。 ctrl + z 可以将一个正在前台执行命令放到后台,并且处于暂停状态。...最后一个&, 是让该命令在后台执行

    2.7K31

    如何使用CIMplant收集远程系统中的数据并执行命令

    关于CIMplant CIMplant是WMImplant项目的C#实现,并扩展了原项目的相关功能,该工具 能够使用CIM或WMI来查询远程系统,并且可以使用用户提供的凭据或当前用户的会话来执行操作。...注意:某些命令仍然会使用PowerShell与WMI结合的方式来实现。...CIMplant使用了C#对@christruncer的WMImplant项目进行了重写功能扩展,可以帮助广大研究人员从远程系统中收集数据、执行命令以及提取数据等等。...该工具允许使用WMI或CIM来进行连接,并且需要目标系统中中的本地管理员权限来执行任务操作。...通常,WMI使用DCOM作为通信协议,而CIM使用的是WSMan(或WinRM)。对于DCOM,我们可以做的第一件事是通过端口135寻找初始TCP连接。然后,连接接收系统将决定使用一个新的端口。

    1.2K30

    如何在Linux上使用pbcopypbpaste命令

    由于 Linux Mac OS X 是基于 *Nix 的系统,因此许多命令可以在两个平台上运行。但是,某些命令可能在两个平台上都没有,比如 pbcopy pbpast。...但是,从 Mac OS 切换到 Linux 的发行版的人将会找不到这两个命令,不过仍然想使用它们。别担心!这个简短的教程描述了如何在 Linux 上使用 pbcopy pbpaste 命令。...但是,我们可以通过 shell 别名使用 xclip /或 xsel 命令复制 pbcopy pbpaste 命令的功能。...在 Linux 上使用 pbcopy pbpaste 命令 让我们看一些例子。 pbcopy 命令将文本从 stdin 复制到剪贴板缓冲区。例如,看看下面的例子。...$ pbpaste 使用 pbcopy pbpaste 命令可以做更多的事情。我希望你现在对这些命令有一个基本的想法。 就是这些了。还有更好的东西。敬请关注!

    2.1K30

    如何在 Linux 上使用 lsblk blkid 命令

    在 Linux 操作系统中,有许多命令可用于管理查看存储设备。其中,lsblk blkid 是两个常用的命令,用于显示识别块设备及其相关信息。...本文将详细介绍如何使用 lsblk blkid 命令来管理获取关于块设备的有用信息。lsblk 命令lsblk 命令用于列出块设备的信息,例如硬盘、分区、RAID 等。...以下是使用 lsblk 命令的一些常见用法:列出所有块设备要列出系统上的所有块设备,可以简单地执行以下命令:lsblk图片该命令将显示每个块设备的名称、大小、挂载点等信息。...以下是使用 blkid 命令的一些常见用法:显示设备的标识信息要查看特定设备的标识信息,可以执行以下命令:blkid /dev/sda1图片该命令将显示设备 /dev/sda1 的文件系统类型、UUID...使用特定格式显示标识信息blkid 命令还支持使用不同的输出格式显示标识信息。

    3.5K30

    如何在终端 PowerShell 中将一个命令自动重复执行多次

    你可能有很多原因要将一个命令重复执行多次,本文介绍在多个平台下如何多次重复执行命令。 背景 最近遇到一个偶然复现的单元测试错误,于是在每次运行时,打算重复运行多次来调查问题是否已经解决。...实际上,重复执行命令有更多用途: 通过重复执行来复现一些偶发的问题 执行一组命令,每次只有参数不同 大大减轻手工输入命令的工作量 Bash Linux 或者 Mac 系统的终端中,可以使用 for 来完成重复执行命令...,使用 ${} 来引用定义的变量。.../Walterlv.Tests.dll; done Microsoft (R) 测试执行命令行工具版本 16.3.0 版权所有 (C) Microsoft Corporation。保留所有权利。...\Walterlv.Tests.dll } Microsoft (R) 测试执行命令行工具版本 16.3.0 版权所有 (C) Microsoft Corporation。保留所有权利。

    3.9K10

    python命令行库如何实现命令共享参数?

    本文的目标: 本文计划实现一个带有命令命令行工具,同时带有全局级别的配置参数(比如数据文件地址等)。在这个前提下使用不同的标准来比较所提到的三个命令行库。...对于给定的命令readwrite,父命令有一个--format参数,如何使得python main.py read --format=xxx成立。...即可,但是--debug只能在命令执行 import click @click.group() @click.option('--debug',default=False) def cli(debug...此外,使用set_defaults来设置了命令的处理函数,以应对可能需要进行单独处理的情况。 唯一的问题是,全局参数的实现比价违背一般的习惯。...实现需求 需求本身是很简单的,最关键的一点就是命令之间要共享部分全局参数 argparse SO上这个回答还挺不错的。

    93520

    argparse 的高级用法

    但是我想在这个基础上,还想提供新增命令选项的功能,比如在原来的 greet 命令上加一个 --verbose 选项,如果为真就啰嗦地问好,否则简洁地问好。这如何做到呢?...argparse 的进击 argparse命令 argparse 也是支持命令的,而且命令也可有自己的命令。...这看上去比 click 费劲多了,而且还只是拿到解析结果,没有处理,但这个缺点也让 argparse 更加灵活,我们可以控制它如何找到对应的处理方法。 继承扩展,这不就是 OOP 的思想吗?...也就是说如果没有匹配到这个子命令是不会执行任何该命令的相关动作,也不会把这个子命令的参数加入到解析器中。 而相同层级的命令必然是互斥的,不可能存在同时匹配到多个子命令的情况。...PDM 就是使用了这个方法实现了可扩展的命令行解析,完整的命令类在 pdm/cli/commands,命令解析的组装过程在 pdm/core.py 可以看到。

    24540
    领券