还有其他方法可以验证python3中的命令行参数吗?

dhvcc

在没有外部模块和argparse的情况下,还有其他更有效的方法来验证命令行args吗?

import sys
import getopt

argv = sys.argv[1:]
try:
    opts, args = getopt.getopt(argv, "h", ["help", "version", "number="])
except getopt.GetoptError as error:
    print(error)
    exit(1)
if args:
    exit(1)
print(opts)
print(args)

因此,这就是我的操作方法,但是可以吗?我是python的新手,并尝试使用尽可能多的python功能

mario_sunny

您应该查看Python的内置argparse从命令行手动解析复杂的命令会花费很多麻烦。您可以强制某些参数为某种类型或值。

用法示例:

import sys
import argparse

PHASES = ['clean', 'package', 'install', 'test', 'deploy']
ALT_PHASES = ['docs', 'demos', 'update']

parser = argparse.ArgumentParser()
parser.add_argument(
    'phase',
    help="the target phase",
    choices=PHASES + ALT_PHASES
)
parser.add_argument(
    '--skip-demos',
    help="skip packaging and deployment of demos",
    action='store_const',
    const=str
)
parser.add_argument(
    '--skip-docs',
    help="skip generation and deployment of user's guide",
    action='store_const',
    const=str
)
parser.add_argument(
    '--skip-tests',
    help="skip tests",
    action='store_const',
    const=str
)
parser.add_argument(
    '--skip-wheels',
    help="skip wheel generation",
    action="store_const",
    const=str
)
parser.add_argument(
    '--update',
    help="update the source code in the virtual environment; do not make the wheels",
    action="store_const",
    const=str
)

def main(args):
    parsed_args = parser.parse_args(args)
    print(parsed_args.phase) # prints the phase


if __name__ == "__main__":
    main(sys.argv[1:])

输入无效参数时的示例输出:

$ python3 build.py hello
usage: build.py [-h] [--skip-demos] [--skip-docs] [--skip-tests]
                [--skip-wheels] [--docs-branch DOCS_BRANCH]
                [--skip-formatting] [--int-tests] [--update]
                {clean,package,install,test,deploy,docs,demos,update}
build.py: error: argument phase: invalid choice: 'hello' (choose from 'clean', 'package', 'install', 'test', 'deploy', 'docs', 'demos', 'update')

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

除了使用Node.js“ Firebase deploy”命令行工具外,还有其他方法可以将内容获取到Firebase Hosting / CDN吗?

来自分类Dev

除了使用Node.js“ Firebase deploy”命令行工具外,还有其他方法可以将内容获取到Firebase Hosting / CDN吗?

来自分类Dev

除了身份验证之外,还有其他方法可以区分用户吗?

来自分类Dev

Python-还有其他方法可以在列表推导中应用函数和过滤器吗?

来自分类Dev

Python-还有其他方法可以在列表推导中应用函数和过滤器吗?

来自分类Dev

除了“ try ... except”和“ .isdigit()”以外,还有其他方法可以检查Python 2中的用户输入吗?

来自分类Dev

在SwiftUI中无需使用GeometryReader,还有其他方法可以访问safeAreaInsets吗?

来自分类Dev

还有其他方法可以滤除excel中的空白吗?

来自分类Dev

还有其他方法可以在php中创建pdf吗?

来自分类Dev

还有其他方法可以在javascript中获取对象属性吗?

来自分类Dev

python中的Goto语句-还有其他方法吗?

来自分类Dev

还有其他方法可以不在每个软件包中的Jaxb中重复package-info吗?

来自分类Dev

如何在Jquery选择插件中搜索Urdu?还有其他方法可以在Selectbox中搜索urdu吗?

来自分类Dev

除了在卡中使用sigin以外,还有其他方法可以在bot中登录用户吗?

来自分类Dev

除了Handler.postDelayed(),还有其他方法可以在android中创建时间延迟吗?

来自分类Dev

除了计数,还有其他方法可以计算字符串中的重复次数吗?

来自分类Dev

我还有其他方法可以用来读取代码中的行以执行readLine()的功能吗?

来自分类Dev

还有其他方法可以将计算出的信息添加到表中吗?

来自分类Dev

除了OLE对象,还有其他方法可以在OpenOffice Writer中显示电子表格吗?

来自分类Dev

firefox 52不再支持Java插件。还有其他方法可以在firefox中运行Java applet吗?

来自分类Dev

除了使用表格之外,还有其他方法可以在 EXCEL VBA 中存储文件夹路径吗?

来自分类Dev

还有什么其他方法可以代替使用isPressed()方法吗?

来自分类Dev

还有其他方法可以为Visual Studio 2015构建opencv吗?

来自分类Dev

还有其他方法可以使用C#访问打开的表单吗?

来自分类Dev

还有其他方法可以在pygame中加载图片吗?

来自分类Dev

除了alsactl存储之外,还有什么其他方法可以保存alsamixer设置吗?

来自分类Dev

还有其他方法可以为Visual Studio 2015构建opencv吗?

来自分类Dev

除了 PHPUnit,还有其他方法可以测试 Symfony 应用程序吗?

来自分类Dev

还有其他方法可以在 Ubuntu 上启动脚本吗?

Related 相关文章

  1. 1

    除了使用Node.js“ Firebase deploy”命令行工具外,还有其他方法可以将内容获取到Firebase Hosting / CDN吗?

  2. 2

    除了使用Node.js“ Firebase deploy”命令行工具外,还有其他方法可以将内容获取到Firebase Hosting / CDN吗?

  3. 3

    除了身份验证之外,还有其他方法可以区分用户吗?

  4. 4

    Python-还有其他方法可以在列表推导中应用函数和过滤器吗?

  5. 5

    Python-还有其他方法可以在列表推导中应用函数和过滤器吗?

  6. 6

    除了“ try ... except”和“ .isdigit()”以外,还有其他方法可以检查Python 2中的用户输入吗?

  7. 7

    在SwiftUI中无需使用GeometryReader,还有其他方法可以访问safeAreaInsets吗?

  8. 8

    还有其他方法可以滤除excel中的空白吗?

  9. 9

    还有其他方法可以在php中创建pdf吗?

  10. 10

    还有其他方法可以在javascript中获取对象属性吗?

  11. 11

    python中的Goto语句-还有其他方法吗?

  12. 12

    还有其他方法可以不在每个软件包中的Jaxb中重复package-info吗?

  13. 13

    如何在Jquery选择插件中搜索Urdu?还有其他方法可以在Selectbox中搜索urdu吗?

  14. 14

    除了在卡中使用sigin以外,还有其他方法可以在bot中登录用户吗?

  15. 15

    除了Handler.postDelayed(),还有其他方法可以在android中创建时间延迟吗?

  16. 16

    除了计数,还有其他方法可以计算字符串中的重复次数吗?

  17. 17

    我还有其他方法可以用来读取代码中的行以执行readLine()的功能吗?

  18. 18

    还有其他方法可以将计算出的信息添加到表中吗?

  19. 19

    除了OLE对象,还有其他方法可以在OpenOffice Writer中显示电子表格吗?

  20. 20

    firefox 52不再支持Java插件。还有其他方法可以在firefox中运行Java applet吗?

  21. 21

    除了使用表格之外,还有其他方法可以在 EXCEL VBA 中存储文件夹路径吗?

  22. 22

    还有什么其他方法可以代替使用isPressed()方法吗?

  23. 23

    还有其他方法可以为Visual Studio 2015构建opencv吗?

  24. 24

    还有其他方法可以使用C#访问打开的表单吗?

  25. 25

    还有其他方法可以在pygame中加载图片吗?

  26. 26

    除了alsactl存储之外,还有什么其他方法可以保存alsamixer设置吗?

  27. 27

    还有其他方法可以为Visual Studio 2015构建opencv吗?

  28. 28

    除了 PHPUnit,还有其他方法可以测试 Symfony 应用程序吗?

  29. 29

    还有其他方法可以在 Ubuntu 上启动脚本吗?

热门标签

归档