如何从命令行打开Python方法(多个方法选择)

时间:2017-01-24 00:49:24

标签: python python-3.x cmd

首先,我是Python的新手。 我试图使用两种方法制作Python文件:

def hello():
    print("Hello.")

def bye():
    print("Bye bye.")

我知道一个只使用一种方法的选项。

if __name__ == "__main__":
    hello()

这将使用以下命令从CMD打开文件:

>python file.py 

同样,它会打开文件但是部署hello(),我需要让用户选择hello()或bye()方法。在互联网上,我看到了以下CMD命令

>python file.py hello()
>python file.py bye() 

不知何故有效,但我不知道怎么做,有人知道吗?

问候!

1 个答案:

答案 0 :(得分:4)

您需要处理sys.argv中提供的命令行参数

最直接的方式是:

import sys

def hello():
    print("Hello.")

def bye():
    print("Bye bye.")

def main():
    funcname = sys.argv[1]
    if funcname == 'hello':
        hello()
    elif funcname == 'bye':
        bye()
    else:
        print("ERROR: Invalid function")   

if __name__ == '__main__':
    main()

对此的改进是创建映射:

import sys

def hello():
    print("Hello.")

def bye():
    print("Bye bye.")

def main():
    funcmap = {
        'hello': hello,
        'bye':   bye,
    }
    def invalid():
        print("ERROR: Invalid function")
        sys.exit(1)

    funcname = sys.argv[1]
    f = funcmap.get(funcname, invalid)
    f()

if __name__ == '__main__':
    main()

如果你想要更复杂的东西,比如git处理子命令的方式,例如git push origin mastergit status,我建议使用argparse子解析器。有关详细信息,请参阅this question/answer