首先,我是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()
不知何故有效,但我不知道怎么做,有人知道吗?
问候!
答案 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 master
和git status
,我建议使用argparse
子解析器。有关详细信息,请参阅this question/answer。