协慌网

登录 贡献 社区

如何读取 / 处理命令行参数?

答案

import sys

print("\n".join(sys.argv))

sys.argv 是一个列表,其中包含在命令行sys.argv sys.argv[0]是脚本名称。

基本上,

import sys
print(sys.argv[1:])

标准库中的规范解决方案是argparsedocs ):

这是一个例子:

from argparse import ArgumentParser

parser = ArgumentParser()
parser.add_argument("-f", "--file", dest="filename",
                    help="write report to FILE", metavar="FILE")
parser.add_argument("-q", "--quiet",
                    action="store_false", dest="verbose", default=True,
                    help="don't print status messages to stdout")

args = parser.parse_args()

argparse支持(除其他外):

  • 任意顺序的多个选项。
  • 短期和长期选择。
  • 默认值。
  • 生成使用帮助消息。

出于 这些原因,只是为了使argparse传福音更好.. 本质上:

(从链接复制)

  • argparse 模块可以处理位置和可选参数,而 optparse 仅可以处理可选参数

  • argparse 对于您的命令行界面应该是什么样的并不教条 - 支持像 - file 或 / file 这样的选项,以及必需的选项。 Optparse 拒绝支持这些功能,而是偏向于纯度而不是实用性

  • argparse 会产生更多有用的用法消息,包括根据您的参数确定的命令行用法,以及有关位置参数和可选参数的帮助消息。 optparse 模块需要您编写自己的用法字符串,并且无法显示位置参数的帮助。

  • argparse 支持消耗可变数量的命令行 args 的操作,而 optparse 要求事先知道确切数量的参数(例如 1、2 或 3)

  • argparse 支持分派到子命令的解析器,而 optparse 需要设置allow_interspersed_args并手动执行解析器分派

和我个人最喜欢的:

  • argparse 允许使用简单的可调用对象来指定类型和操作参数add_argument() ,而 optparse 则需要破解类属性(如STORE_ACTIONSCHECK_METHODS以进行正确的参数检查