gpt4 book ai didi

带有多个argv的python命令行

转载 作者:行者123 更新时间:2023-11-30 23:06:35 26 4
gpt4 key购买 nike

我编写了一个 bash 脚本,它基本上是命令 nsupdate/rndc 的包装器。它检查 dns 服务器的状态,查询它们,然后添加/删除记录、cname、反向等。

问题是......这是一大堆无处不在的 shell 命令。它不太漂亮,维护起来也是一场噩梦。

我遇到了 dnsupdate python 库( http://www.dnspython.org/ ),对我来说它可以完成我正在做的所有事情,而且更好。所以我想用 python 重新编码所有内容。

我对 python 还很陌生(我知道语言结构,但从来没有做过像这样的大项目),而且我从一开始就使用命令行选项进行了调试。

我已经阅读了 argparse python 文档,但不确定这是正确的方法。在 shell 中,一个简单的 getopt 和一个 case 就可以解决问题,但是 python 如何处理命令行选项呢?

./easy_nsupdate -a record -ip=10.10.10.10 -name=toto
./easy_nsupdate -r record -ip=10.10.10.10 -name=toto
./easy_nsupdate -a cname -name=toto -cname=newtoto
./easy_nsupdate -r cname -cname=newtoto

一些 opt 值是正向或反向,或者最后使用可怕的 --force 来绕过所有 dns 查询检查。

现在这是我对 getopt 的尝试,但这似乎不是一个很好的开始:

def main(argv):
if len(sys.argv) > 4 :
usage()
print("Too many arguments")
sys.exit()
try:
opts, args = getopt.getopt(argv, "h:d", ["help", "add_rec", "remove_rec"])
except getopt.GetoptError:
usage()
sys.exit(1)
for opt, arg in opts:
if opt in ("-h", "--help"):
usage()
sys.exit()
elif opt == '-d':
global _debug
_debug = 1
elif opt in ("add_rec"):
operation,record,info = arg1, arg2, arg3
elif opt in ("remove_rec"):
operation,record,info = arg1, arg2, arg3
elif opt in ("add_cname"):
operation,record,info = arg1, arg2, arg3
elif opt in ("remove_cname"):
operation,record,info = arg1, arg2

简单地说:你们如何在命令行处理一长串参数+值?

最佳答案

The Hitchhiker's Guide to Python有一个page致力于帮助您构建控制台应用程序的库。我建议您使用Click作者解释得很好why .

关于带有多个argv的python命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32589696/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com