在Python脚本中摸索命令行参数

发布于 2024-12-22 07:57:24 字数 158 浏览 3 评论 0原文

我对 python 比较陌生。我想编写一个脚本并向其传递如下参数:

myscript.py --arg1=hello --arg2=world

在脚本中,我想访问参数 arg1 和 arg2。谁能解释如何以这种方式访问​​命令行参数?

I am relatively new to python. I want to write a script and pass it parameters like this:

myscript.py --arg1=hello --arg2=world

In the script, I want to access the arguments arg1 and arg2. Can anyone explains how to access command line parameters in this way?

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

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

发布评论

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

评论(4

棒棒糖 2024-12-29 07:57:24

Argparse 是标准库的一部分(从版本 2.7 和 3.2 开始)。这是我用来处理所有命令行解析的模块,尽管还有 optparse (现已弃用)和 getopt

以下是如何使用 argparse 的简单示例:

import sys, argparse

def main(argv=None):

    if argv is None:
        argv=sys.argv[1:]

    p = argparse.ArgumentParser(description="Example of using argparse")

    p.add_argument('--arg1', action='store', default='hello', help="first word")
    p.add_argument('--arg2', action='store', default='world', help="second word")

    # Parse command line arguments
    args = p.parse_args(argv)

    print args.arg1, args.arg2

    return 0

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

编辑:请注意,在调用 add_arguments 时使用前导“--”会使 arg1< /code> 和 arg2 可选参数,因此我提供了默认值。如果您希望编程需要两个参数,请删除这两个前导连字符,它们将成为必需参数,并且您不需要 default=... 选项。 (严格来说,您也不需要 action='store' 选项,因为 store 是默认操作)。

Argparse is part of the standard library (as of versions 2.7 and 3.2). This is the module I use to handle all my command line parsing although there is also optparse (which is now deprecated) and getopt.

The following is a simple example of how to use argparse:

import sys, argparse

def main(argv=None):

    if argv is None:
        argv=sys.argv[1:]

    p = argparse.ArgumentParser(description="Example of using argparse")

    p.add_argument('--arg1', action='store', default='hello', help="first word")
    p.add_argument('--arg2', action='store', default='world', help="second word")

    # Parse command line arguments
    args = p.parse_args(argv)

    print args.arg1, args.arg2

    return 0

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

Edit: Note that the use of the leading '--' in the calls to add_arguments make arg1 and arg2 optional arguments, so I have supplied default values. If you want to program to require two arguments, remove these two leading hypens and they will become required arguments and you won't need the default=... option. (Strictly speaking, you also don't need the action='store' option, since store is the default action).

亢潮 2024-12-29 07:57:24

http://docs.python.org/library/argparse.html#module-argparse

简单的例子可以提供帮助

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                   help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                   const=sum, default=max,
                   help='sum the integers (default: find the max)')

args = parser.parse_args()
print args.accumulate(args.integers)

http://docs.python.org/library/argparse.html#module-argparse

simple example can help

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                   help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                   const=sum, default=max,
                   help='sum the integers (default: find the max)')

args = parser.parse_args()
print args.accumulate(args.integers)
热风软妹 2024-12-29 07:57:24

查看标准库中包含的 argparse 模块。一旦你习惯了它,它就会变得轻而易举,而且它非常强大。这是一个教程。建议使用此模块而不是 optparse 或 getopt 模块。

如果您不想使用该模块但仍想访问参数,请查看 sys 模块< /a>.您将需要查看 sys.argv。

Check out the argparse module included with the standard library. It makes this stuff a breeze once you get used to it, and it is very robust. Here is a tutorial. It is recommended to use this rather than the optparse or getopt modules.

If you don't want use the module but still want to access the arguments, check out the sys module. You will want to look at sys.argv.

慵挽 2024-12-29 07:57:24

Python 提供了 3 种不同的解析命令行参数的方法,不包括您自己使用对参数列表的原始访问权限编写的任何方法。

http:// /docs.python.org/dev/whatsnew/2.7.html#pep-389-the-argparse-module-for-parsing-command-lines

用于解析命令行参数的 argparse 模块已作为
optparse 模块的更强大替代品。

这意味着Python现在支持三种不同的模块进行解析
命令行参数:getopt、optparse 和 argparse。获取选项
模块与 C 库的 getopt() 函数非常相似,因此它
如果您正在编写一个 Python 原型,那么它仍然很有用
最终用 C 重写。 optparse 变得多余,但是有
没有计划删除它,因为有许多脚本仍在使用
它,并且没有自动方法来更新这些脚本。 (使
讨论了与 optparse 接口一致的 argparse API,但是
因太混乱和困难而被拒绝。)

简而言之,如果您正在编写新脚本并且不需要担心
与早期版本的 Python 兼容,使用 argparse 而不是
选择解析。

Python supplies 3 different ways of parsing command line arguments, not including any you write yourself using raw access to the parameter list.

http://docs.python.org/dev/whatsnew/2.7.html#pep-389-the-argparse-module-for-parsing-command-lines

The argparse module for parsing command-line arguments was added as a
more powerful replacement for the optparse module.

This means Python now supports three different modules for parsing
command-line arguments: getopt, optparse, and argparse. The getopt
module closely resembles the C library’s getopt() function, so it
remains useful if you’re writing a Python prototype that will
eventually be rewritten in C. optparse becomes redundant, but there
are no plans to remove it because there are many scripts still using
it, and there’s no automated way to update these scripts. (Making the
argparse API consistent with optparse‘s interface was discussed but
rejected as too messy and difficult.)

In short, if you’re writing a new script and don’t need to worry about
compatibility with earlier versions of Python, use argparse instead of
optparse.

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