使用 getopt 的命令行选项和参数

发布于 2024-11-18 00:45:44 字数 621 浏览 3 评论 0原文

我正在尝试在 python 中编写一段代码,以使用 getopt 模块获取命令行选项和参数。 这是我的代码:

import getopt
import sys

def usage ():
    print('Usage')

def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], 'xy:')
    except getopt.GetoptError as err:
        print(err)
        usage()
        sys.exit()

    for o,a in opts:
        if o in ("-x", "--xxx"):
            print(a)
        elif o in ("-y", "--yyy"):
            print(a)
        else:
            usage()
            sys.exit()

if __name__ == "__main__":
    main()

问题是我无法读取选项x的参数,但我可以读取y的参数。我应该怎么做才能解决这个问题?

I'm trying to write a piece of code in python to get command-line options and arguments using getopt module.
Here is my code:

import getopt
import sys

def usage ():
    print('Usage')

def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], 'xy:')
    except getopt.GetoptError as err:
        print(err)
        usage()
        sys.exit()

    for o,a in opts:
        if o in ("-x", "--xxx"):
            print(a)
        elif o in ("-y", "--yyy"):
            print(a)
        else:
            usage()
            sys.exit()

if __name__ == "__main__":
    main()

The problem is that I can't read the argument of option x, but I can read the argument of y. What should I do to fix this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情未る 2024-11-25 00:45:44

尝试 getopt.getopt(sys.argv[1:], 'x:y:')

http ://docs.python.org/library/getopt.html

解析命令行选项并
参数列表。 args 是参数
要解析的列表,不带前导
引用正在运行的程序。
通常,这意味着 sys.argv[1:]。
options 是选项字符串
脚本想要的字母
识别,并提供需要的选项
参数后跟冒号 (':';
即,与 Unix 相同的格式
getopt() 使用)。

Try getopt.getopt(sys.argv[1:], 'x:y:')

http://docs.python.org/library/getopt.html

Parses command line options and
parameter list. args is the argument
list to be parsed, without the leading
reference to the running program.
Typically, this means sys.argv[1:].
options is the string of option
letters that the script wants to
recognize, with options that require
an argument followed by a colon (':';
i.e., the same format that Unix
getopt() uses).

山色无中 2024-11-25 00:45:44

如果你想阅读参数,那么选项旁边应该有“:”,有一些选项不需要参数,例如“help”和“verbose”,它们后面不需要“:”。

import getopt
import sys

def usage ():
    print('Usage')

def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], 'x:y:h', ['xxx=', 'yyy=', 'help='])
    except getopt.GetoptError as err:
        print(err)
        usage()
        sys.exit()

    for opt,arg in opts:
        if opt in('-h', '--help'):
            usage()
            sys.exit( 2 )
        elif opt in ('-x', '--xxx'):
            print(arg)
        elif opt in ('-y', '--yyy'):
            print(arg)
        else:
            usage()
            sys.exit()

if __name__ == "__main__":
    main()

If you want to read argument then the option should've ':' next to it, there are few options which doesn't need argument like 'help' and 'verbose' which don't need ':' to be followed.

import getopt
import sys

def usage ():
    print('Usage')

def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], 'x:y:h', ['xxx=', 'yyy=', 'help='])
    except getopt.GetoptError as err:
        print(err)
        usage()
        sys.exit()

    for opt,arg in opts:
        if opt in('-h', '--help'):
            usage()
            sys.exit( 2 )
        elif opt in ('-x', '--xxx'):
            print(arg)
        elif opt in ('-y', '--yyy'):
            print(arg)
        else:
            usage()
            sys.exit()

if __name__ == "__main__":
    main()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文