gpt4 book ai didi

python - 如何在不变的情况下将 argparse 参数传递给另一个 python 程序?

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

我正在编写一个脚本,一些子程序将在该脚本下运行。例如test.py是主程序,在test1.pytest2.pytest3.pl之下> 将运行,我需要将主程序 (test.py) 的参数传递给 test1.py 和 test2.py 程序。参数应保持不变。在传递给另一个程序时。

代码:test.py

import argparse
import subprocess
import os

commandLineArgumentParser = argparse.ArgumentParser()
commandLineArgumentParser.add_argument("-fname", "--fname",help="first name")
commandLineArgumentParser.add_argument("-lname","--lname", help="last name")
commandLineArgumentParser.add_argument("-age","--age", help="age")
commandLineArguments = commandLineArgumentParser.parse_args()

fname = commandLineArguments.fname
lname = commandLineArguments.lname
age = commandLineArguments.age

print "%s%s%s" %(fname,lname,age)

我正在通过以下命令运行程序:

python test.py -fname=abc -age=22 -lname='test a'
or
python test.py -fname="abc test" lname='val' -age=30
or
python test.py -age=45 -lname='abc aa' fname="abc"
or
python test.py -age=45 -lname="test"

现在我想在不变的情况下获取参数部分并放入一个变量,然后我们可以轻松地将参数传递给程序。

对于第一个命令,变量将保存

-fname=abc -age=22 -lname='test a'

第二个命令

-fname="abc test" lname='val' -age=30

我试图使用波纹管代码获取参数,但脚本缺少配额。

my_argu=''
if len(sys.argv) >1:
for x in sys.argv:
if x == sys.argv[0]:
continue
if x == sys.argv[len(sys.argv)-1]:
my_argu =my_argu+x
else:
my_argu = my_argu+x+' '
print "%s" %(my_argu)

对于

python test.py -fname="abc test" lname='val' -age=30

输出是:

abc testval30

-fname=abc test lname=val -age=30

如您所见,缺少配额。所以我需要帮助来解决它

最佳答案

似乎您应该将所有这些放在一个包装器中,然后调用它。

# wrapper.py

import test, test1, test2, test3
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("-fname", "--fname",help="first name")
parser.add_argument("-lname","--lname", help="last name")
parser.add_argument("-age","--age", help="age")
cli_args = parser.parse_args()

test.run(cli_args)
test1.run(cli_args)
test2.run(cli_args)
test3.run(cli_args)

然后在你的每个 testN.py 中......

# test.py

def run(cli_args):
print("Your name is {} {}".format(cli_args.fname, cli_args.lname))
# or whatever your program does....

然后做:

$ python wrapper.py --fname Adam --lname Smith

关于python - 如何在不变的情况下将 argparse 参数传递给另一个 python 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29892810/

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