哪个更高效、更有效 - sys.argv 或 argparse? [已关闭]

问题描述 投票:0回答:0

寻找关于更好地使用脚本命令行参数的想法和/或意见(特别是在命令行调用函数): sys.argv 还是 argparse?

示例:

user1# ./myscript.py func1

主要代码:

#!/location_to/bin/python

 import pyWars
 import argparse
 import func_solve #functions created to solve pywars


 class SolutionsParser():
    def __init__(self):
        self.parser = argparse.ArgumentParser(description="Answer the pyWars from cmdline without use of interpreter", prog='pywars_cmdline')
        self.parser.add_argument("-l","--lab", help="Set the %(prog)s lab number u want to answer", type=str, default=0)
        self.parser.add_argument("-a","--ans", type=bool, default=False)
        self.parser.add_argument("-lt", "--labtest", type=bool, default=False)
        self.args = self.parser.parse_args()

   def main():
        py = pyWars.exercise("https://exercise.location.com:port")

    uinput = SolutionsParser()
    solvelab = func_solve.LabSolutions

    func_calls = {
         "lab3.1.0": solvelab.lab310,
         "lab3.1.1": solvelab.lab311
        }

    lab = uinput.args.lab

    #login
    py.login("username", "password")
    py.print_rich_text = True

    #below if statement reflects manual change each time I solved a problem

    if uinput.args.ans == True:
         print(py.answer(solvelab.lab310(py.data(lab))))
         py.score()

    # below elif statement reflects change to use str as function call using a dict

    elif uinput.args.labtest == True:
         for i in func_calls:
         if i == lab:
             py.question(lab)
             func_calls[i](py.data(lab))

    elif uinput.args.lab:
         py.question(lab)
         py.score()

    elif uinput.args.lab:
         py.score()
 
if __name__ == "__main__":
        main()

请并谢谢你。

我的脚本使用argparse。 argparse 的命令行参数是类型 (str)。我无法使用包含 str 的变量来替换我调用 func 的脚本中的 func 名称。`

python command-line argparse argv
© www.soinside.com 2019 - 2024. All rights reserved.