Python基于在命令行上传递的sys.argv执行if/else语句

Python基于在命令行上传递的sys.argv执行if/else语句,python,if-statement,sys,Python,If Statement,Sys,我是Python新手,语法真的让我很反感。我需要执行一个脚本,在这个脚本中,我希望根据在命令行上传递的参数执行一个函数。以下是伪代码: import sys ... Code Authentication Role Validation ... Arg[1] Arg[2] Arg[3] if(Arg[3] !exist) execute Func1 with Arg[1] & Arg[2] else if execute Func 2 with Arg[1], [2]

我是Python新手,语法真的让我很反感。我需要执行一个脚本,在这个脚本中,我希望根据在命令行上传递的参数执行一个函数。以下是伪代码:

import sys

...
Code
Authentication
Role Validation 
...

Arg[1]
Arg[2]
Arg[3]

if(Arg[3] !exist)
  execute Func1 with Arg[1] & Arg[2]
else if 
  execute Func 2 with Arg[1], [2] & [3]

有人能指导我如何在Python的世界中构造它吗?或者是否有其他方法可以做到这一点?

如果必须使用
sys.argv
,它只是一个普通的Python
列表,您可以在它上面使用
len
来检查传递了多少个参数(记住,
0
th元素是程序本身)

我建议你看看这样的东西;这需要学习更多的工作,但这意味着您的脚本将自动获得
-h/--help
支持,这使得脚本的使用更加容易,而无需单独实现使用消息,从而有失去同步的风险


或者,如果您准备使用第三方软件包,通常被誉为是
argparse

的替代品。如果您必须使用
sys.argv
,那么它只是一个普通的Python
列表
,您可以在它上面使用
len
来检查传递了多少个参数(请记住,
0
th元素是程序本身)

我建议看一下类似的东西;这需要学习更多的工作,但这意味着您的脚本会自动获得
-h/--help
支持,这使得使用脚本更加容易,而无需单独实现用法消息,从而有失步的风险


或者,如果您准备使用第三方软件包,通常会被称赞为是
argparse

的替代方案,我相信这就是您要寻找的。
sys.argv
是包含命令行参数的列表。
sys.argv[0]
通常是您运行的命令,因此您对之后的命令感兴趣

if len(sys.argv) == 4:
    execute Func 2 with sys.argv[1], sys.argv[2] & sys.argv[3]
elif len(sys.argv) == 3:
    execute Func1 with sys.argv[1] & sys.argv[2]

我相信这就是您要寻找的。
sys.argv
是包含命令行参数的列表。
sys.argv[0]
通常是您运行的命令,因此您对之后的命令感兴趣

if len(sys.argv) == 4:
    execute Func 2 with sys.argv[1], sys.argv[2] & sys.argv[3]
elif len(sys.argv) == 3:
    execute Func1 with sys.argv[1] & sys.argv[2]
将为您获取调用脚本时使用的参数,例如,如果您这样运行脚本:

pytohn script.py arg1 arg2
sys.argv
将是:

["script.py", "arg1", "arg2"]
此外,内置函数将返回数组的长度。因此,对于上述示例,
len
应为
3

知道了这一点,您应该能够编写代码

如果你很难做到这一点,这里有一个提示:

import sys
arg = sys.argv

if len(arg) == 3:
    func1(arg[1], arg[2])

elif len(arg) == 4:
    func2(arg[1], arg[2], arg[3])
将为您获取调用脚本时使用的参数,例如,如果您这样运行脚本:

pytohn script.py arg1 arg2
sys.argv
将是:

["script.py", "arg1", "arg2"]
此外,内置函数将返回数组的长度。因此,对于上述示例,
len
应为
3

知道了这一点,您应该能够编写代码

如果你很难做到这一点,这里有一个提示:

import sys
arg = sys.argv

if len(arg) == 3:
    func1(arg[1], arg[2])

elif len(arg) == 4:
    func2(arg[1], arg[2], arg[3])

做你所要求的最简单的事情就是查看
sys.argv

import sys

def func1(a, b):
    print "func1", a, b

def func2(a, b, c):
    print "func2", a, b, c

if __name__ =='__main__':
    if len(sys.argv) == 3:
        func1(sys.argv[1], sys.argv[2])
    elif len(sys.argv) == 4:
        func2(sys.argv[1], sys.argv[2], sys.argv[3])
您似乎已经注意到第一个参数是程序本身。 想想如果传递了错误数量的参数会发生什么。
查看一下
argparse

做你想做的最简单的事情就是查看由
sys.argv

import sys

def func1(a, b):
    print "func1", a, b

def func2(a, b, c):
    print "func2", a, b, c

if __name__ =='__main__':
    if len(sys.argv) == 3:
        func1(sys.argv[1], sys.argv[2])
    elif len(sys.argv) == 4:
        func2(sys.argv[1], sys.argv[2], sys.argv[3])
您似乎已经注意到第一个参数是程序本身。 想想如果传递了错误数量的参数会发生什么。
看看
argparse

你为什么要先做一些教程?听起来像是argparse的一个模型..用谷歌!LMGTFY修改@drum:我建议专注于
sys.argv
len(sys.argv)<4
def这样做(a,b):…
ìf
elif
,在python.org上的教程中-如果遇到墙,请回来。这里的程序员会很乐意帮助您准备/找到下一堵墙;-)您应该显示您实际编写的代码,其语法让您感到困惑。因此,这不是一个代码编写服务。请使用类似这样的方法来迭代命令行参数:对于key,vars(args)中的值。iteritems():为什么要先尝试一些教程?听起来像是ArgParse的模型。。有一个谷歌!。。LMGTFY对@drum的修改:我建议将重点放在教程中的
sys.argv
len(sys.argv)<4
def这样做(a,b):…
f
elif
,如python.org上的教程中,如果碰到墙,请回来。这里的编码员将乐于帮助您准备/找到下一堵墙;-)您应该显示您实际编写的代码,其语法让您感到困惑。因此,它不是一个代码编写服务。请使用类似这样的方法来迭代命令行参数:对于key,vars(args)中的值。iteritems():