寻找关于更好地使用脚本命令行参数的想法和/或意见(特别是在命令行调用函数): 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 名称。`