我原来是一名c程序员。我见过许多技巧和“黑客”来阅读许多不同的论点。python程序员可以通过哪些方式实现这一点?
获取/解析传递给python脚本的命令行参数的最佳方法是什么?实现“[command][action][parameter]”风格的命令行界面?如何在python中处理命令行参数?如何使用python的optpass设置位置参数帮助的格式?
cigdeys316#
还有 argparse stdlib模块(stdlib上的“改进” optparse 模块)。argparse简介中的示例:
argparse
optparse
# script.py import argparse if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument( 'integers', metavar='int', type=int, choices=range(10), nargs='+', help='an integer in the range 0..9') 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))
用法:
$ script.py 1 2 3 4 4 $ script.py --sum 1 2 3 4 10
mutmk8jj17#
仅仅是为了这些原因而四处传福音,哪一个更好。。基本上:(从链接复制)argparse模块可以处理位置参数和可选参数,而optparse只能处理可选参数argparse对于命令行界面应该是什么样子并不是教条式的-支持-file或/file等选项,以及必需的选项。optparse拒绝支持这些功能,更倾向于纯粹性而非实用性argparse生成更多信息性的用法消息,包括根据参数确定的命令行用法,以及位置参数和可选参数的帮助消息。optparse模块要求您编写自己的使用字符串,并且无法显示位置参数的帮助。argparse支持使用数量可变的命令行arg的操作,而optparse要求提前知道参数的确切数量(例如1、2或3)argparse支持分派到子命令的解析器,而optparse需要设置 allow_interspersed_args 以及手动执行解析器分派我个人最喜欢的是:argparse允许类型和操作参数 add_argument() 要使用简单的可调用项指定,而optpass需要黑客类属性,如 STORE_ACTIONS 或 CHECK_METHODS 要获得正确的参数检查
allow_interspersed_args
add_argument()
STORE_ACTIONS
CHECK_METHODS
q9rjltbz18#
import sys print("\n".join(sys.argv)) ``` `sys.argv` 包含在命令行上传递给脚本的所有参数的列表。 `sys.argv[0]` 是脚本名。 基本上,
import sysprint(sys.argv[1:])
18条答案
按热度按时间cigdeys316#
还有
argparse
stdlib模块(stdlib上的“改进”optparse
模块)。argparse简介中的示例:用法:
mutmk8jj17#
仅仅是为了这些原因而四处传福音,哪一个更好。。基本上:
(从链接复制)
argparse模块可以处理位置参数和可选参数,而optparse只能处理可选参数
argparse对于命令行界面应该是什么样子并不是教条式的-支持-file或/file等选项,以及必需的选项。optparse拒绝支持这些功能,更倾向于纯粹性而非实用性
argparse生成更多信息性的用法消息,包括根据参数确定的命令行用法,以及位置参数和可选参数的帮助消息。optparse模块要求您编写自己的使用字符串,并且无法显示位置参数的帮助。
argparse支持使用数量可变的命令行arg的操作,而optparse要求提前知道参数的确切数量(例如1、2或3)
argparse支持分派到子命令的解析器,而optparse需要设置
allow_interspersed_args
以及手动执行解析器分派我个人最喜欢的是:
argparse允许类型和操作参数
add_argument()
要使用简单的可调用项指定,而optpass需要黑客类属性,如STORE_ACTIONS
或CHECK_METHODS
要获得正确的参数检查q9rjltbz18#
import sys
print(sys.argv[1:])