2015-03-03 149 views
2

我正在使用Python 2.7.9并使用argparse模块作为命令行参数。我想扩展我的代码,使其能够根据用户在同一命令行中已经提供的参数取得命令行参数。可以说,参数是-a,-b,-c,-d 如果用户给出-a <value>那么只有他应该能够输入-x <value>并且同样适用于另一种情况。如果用户输入-b <value>那么只有他应该能够输入-y <value>。 任何人都可以请帮助我这个。 谢谢!Python中的迭代命令行参数

+0

我不能够理解我这样做怎么做。我可以使用nargs来使用户输入2值,然后是-a,但我不想使用它。 – Vipul 2015-03-03 09:52:14

回答

1

一种方法是解析ARGS使用parse_known_args两个步骤,例如:

ap = argparse.ArgumentParse() 
ap.add_argument('-a') 
args, unknown = ap.parse_known_args() 
if args.a and '-x' in unknown: 
    ap.add_argument('-x') 
args = ap.parse_args() 
+0

这是行不通的,但我想因为parse_known_args()任何参数正在接受,我想限制。有没有办法可以做到这一点?例如。说这个文件的名称是abc.py 'python abc.py -a name -w surnane' 该代码显示没有错误,但我希望它显示如-w不被接受的错误。 – Vipul 2015-03-04 05:51:42

+0

@Vipul当然,如果你无条件地用'parse_args()'重新解析。我更新了答案中的代码。 – bereal 2015-03-04 06:17:12

+0

非常感谢@bereal。 'AP = argparse.ArgumentParser() ap.add_argument( ' - 一个') 标志= 0 指定参数时,未知= ap.parse_known_args() 如果args.a和未知 '-x': ap.add_argument ( '-x') 标志= 1 ARGS = ap.parse_args() 如果标志== 1: 打印args.x ap.add_argument( ' - p',需要= TRUE)' 能否请你告诉我这个代码有什么问题? – Vipul 2015-03-04 06:36:25

-1

设计命令行参数时,请遵循* nix系统中使用的最佳实践/标准。

  • 参数的顺序并不重要
  • 你在你的程序来检查强制性论点是否有给予,如果如果你正在寻找例如使用​​没有给出有用的信息

请参考link

祝你好运!