首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python 3:测试命令行参数

Python 3:测试命令行参数
EN

Stack Overflow用户
提问于 2013-01-10 04:05:33
回答 3查看 8.2K关注 0票数 0

我是Python的新手。我想编写一个运行在Linux上的脚本。要测试用户是否输入所有脚本参数,请执行以下操作:

  • 如果用户类型: myscript => print "Usage: myscript [Dir] [Old] [New]"
  • 如果用户类型: myscript Dir => print "Please enter Old and New"
  • 如果用户类型: myscript旧=> print "Please enter New"
  • 如果用户键入所有必需的参数,则执行main()。

如何编码myscript?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-10 04:19:09

代码语言:javascript
复制
#! /usr/bin/python3.2

import sys

if __name__ == '__main__':
    if len (sys.argv) < 4:
        print ( ['Usage: myscript [Dir] [Old] [New]',
            'Please enter Old and New',
            'Please enter New'] [len (sys.argv) - 1] )

或者你可以使用you解析。这不能像你在问题中要求的那样,但它有望安抚J.F.塞巴斯蒂安。

代码语言:javascript
复制
#! /usr/bin/python3.2

import argparse

if __name__ == '__main__':
    p = argparse.ArgumentParser (description = 'What your program does.')
    p.add_argument ('dir', metavar = 'dir', type = str, help = 'The directory')
    p.add_argument ('old', metavar = 'old', type = str, help = 'The old value')
    p.add_argument ('new', metavar = 'new', type = str, help = 'The new value')
    args = p.parse_args ()
票数 7
EN

Stack Overflow用户

发布于 2013-01-10 04:14:26

只需检查len(sys.argv)的值即可。注意,第一个参数将是python文件名本身。

如下所示:

代码语言:javascript
复制
import sys

argc = len(sys.argv)

if argc < 2:
    print "Usage: myscript [Dir] [Old] [New]"
    sys.exit();
elif argc < 3:
    print "Please enter Old and New"
    sys.exit();
elif argc < 4:
    print "Please enter New"
    sys.exit();

main()
票数 2
EN

Stack Overflow用户

发布于 2013-01-10 04:14:11

运行脚本时传递的所有参数都将放在sys.argv中。你得先做import sys。然后按照你的意愿来讨论这些争论。你可以考虑数一数你要决定做什么的论点。请注意,第一个参数始终是脚本的名称。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14250658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档