我对python比较陌生。我想写一个脚本并像这样传递参数:
myscript.py --arg1=hello --arg2=world
在脚本中,我想访问参数 arg1 和 arg2。谁能解释如何以这种方式访问命令行参数?
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
makearg1
和arg2
可选参数时使用前导“--”,所以我提供了默认值。如果您想编程要求两个参数,请删除这两个前导连字符,它们将成为必需参数,您将不需要该default=...
选项。(严格来说,您也不需要该action='store'
选项,因为store
这是默认操作)。
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)
查看标准库中包含的argparse模块。一旦你习惯了它,它会让这些东西变得轻而易举,而且它非常强大。这是一个教程。建议使用这个而不是 optparse 或 getopt 模块。
如果您不想使用该模块但仍想访问参数,请查看sys 模块。您将需要查看 sys.argv。
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。getopt 模块与 C 库的 getopt() 函数非常相似,因此如果您正在编写最终将用 C 重写的 Python 原型,它仍然很有用。 optparse 变得多余,但没有计划删除它,因为有很多脚本仍在使用它,并且没有自动更新这些脚本的方法。(讨论了使 argparse API 与 optparse 的接口保持一致,但由于过于混乱和困难而被拒绝。)
简而言之,如果您正在编写一个新脚本并且不需要担心与早期版本的 Python 的兼容性,请使用 argparse 而不是 optparse。