gpt4 book ai didi

python - 如何从交互式解释器调用函数并为 argparse 传递参数?

转载 作者:太空宇宙 更新时间:2023-11-04 02:01:46 26 4
gpt4 key购买 nike

我在文件 test.py 中定义了一个 Python 函数 myFunc。我想在交互模式下从 Python 解释器测试这个函数,并将命令行参数传递给 argparse 进行解析。在 Python 解释器中,我输入 from test import myFunc。然后我希望能够在交互模式下运行“myFunc”...但是向它传递几个命令行参数。

例如,我已经尝试过 myFunc() arg1 arg2 但是 Python 解释器报告 SyntaxError: invalid syntax。

如果我简单地键入 myFunc(),该函数会运行,但当然不会传递任何参数。

我意识到我可以在我的代码中包含以下内容......

if __name__ == "__main__":
myFunc()

然后我可以从命令行“python test.py arg1 arg2”运行这确实有效。

不过,我想知道是否可以在交互模式下从 Python 解释器测试 myFunc() 函数,并将命令行参数传递给 argparse 进行解析。

import argparse
from textwrap import dedent
import sys

def myFunc():
print "hello!"
print str(sys.argv)

parser = argparse.ArgumentParser(prog='Prog',
formatter_class= argparse.RawTextHelpFormatter,
description = dedent('Program to control Tycon TDDin2 Relay states'))
parser.add_argument('addr',
help='ip[:port] address of target device. ' \
'Port defaults to the snmp port of 161.')
parser.add_argument('relay',type=str, help='name of relay')
parser.add_argument('action', type=str, help='action = Open, Close or Cycle')
args = parser.parse_args()

print('args = ' + args.addr + ' ' + args.relay + ' ' + args.action)

最佳答案

parse_args 获取要解析的字符串列表;此参数的默认值为 sys.argv[1:](好吧,实际上是 None,这将被解释为请求使用 sys.argv[ 1:]).将相同的参数添加到 myFunc,以直接传递给 parse_args

def myFunc(cli_args=None):
...

args = parser.parse_args(cli_args)
print('args = ' + args.addr + ' ' + args.relay + ' ' + args.action)

现在您可以使用您想要的任何参数列表调用 myFunc:

myFunc(["192.0.2.24", "foo", "Open"])

请记住,如果无法成功解析 args 列表(而不是仅仅引发自定义异常),parse_args 会有效地退出解释器,因此您需要准备好捕获SystemExit 异常。

关于python - 如何从交互式解释器调用函数并为 argparse 传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55543747/

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