How to open a Python method from command line (Multiple method choices)
本问题已经有最佳答案,请猛点这里访问。
首先,我对python还是个新手。我正在尝试用以下两种方法生成一个python文件:
1 2 3 4 5 | def hello(): print("Hello.") def bye(): print("Bye bye.") |
我知道只有一种方法的选择。
1 2 | if __name__ =="__main__": hello() |
这将允许使用以下命令从cmd打开文件:
1 | >python file.py |
同样,它将打开文件,但部署hello(),我需要一些东西让用户选择hello()或bye()方法。在因特网上,我看到下面的命令
1 2 | >python file.py hello() >python file.py bye() |
不知怎的有用,但我不知道怎么做,有人知道吗?
问候语!
您需要处理命令行参数,这些参数在
最直接的方法是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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() |
这方面的一个改进是创建一个映射:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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() |
如果您想要更复杂的东西,比如