gpt4 book ai didi

python - 如何使用 argparse 正确调用函数?

转载 作者:太空宇宙 更新时间:2023-11-04 10:40:06 25 4
gpt4 key购买 nike

我在理解如何使用 argparse 正确执行基于参数的函数时遇到了一些问题。和 Python 2.7。脚本本身用于 Caesar's cipher .

import argparse

def encipher(s):
pass

def decipher(s):
pass

def main():
parser = argparse.ArgumentParser(description="(de)cipher a string using Caesar's cipher")
group = parser.add_mutually_exclusive_group(required=True)
parser.add_argument('-s', default=1, help='shift length')
group.add_argument('-c', dest='action', action='store_const', const=encipher, help='encipher a string')
group.add_argument('-d', dest='action', action='store_const', const=decipher, help='decipher a string')
parser.add_argument('s', metavar='string', help='string to (de)cipher')

# call function (action) with string here

if __name__ == '__main__':
main()

应该使用的地方:

$ ./cipher.py -c "he had a strange car"
if ibe b tusbohf dbs

我如何正确地将给定的字符串发送到正确的函数,即 encipher(s) with -cdecipher(s)使用 -d,或可选地使用具有不同类次的 -s

我看过一些示例,这些示例表明您可以手动测试解析器的内容,但这不会破坏某些目的吗?

最佳答案

函数将在action中,s中的字符串:

args = parser.parse_args()
args.action(args.s)

请注意,-s 参数的声明与编号参数 s 冲突。你只会看到后者。您应该更改其中一个名称——例如,将编号为 string 的名称更改为 -s,这样短的 -s 就可以保持原样。

关于python - 如何使用 argparse 正确调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21160222/

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