将可能的标志映射到布尔列表有效方法?
Mapping possible flags to boolean list efficient method?
我有一个正在处理的项目,我想将来自用户输入的可能标志(例如“-s”)传递到布尔列表中,从中我可以找到用户请求的特定选项。
我目前的代码:
def run():
running = True
while running:
user_input = input()
dir_path = find_file_name(user_input[2:])
flags = get_action(dir_path[1])
file_dump = []
options = [False] * 6
if user_input[0] == "Q":
running = False
break
elif user_input[0] == "L":
options[0] = "-r" in flags
options[1] = "-f" in flags
options[2] = "-s" in flags
options[3] = "-e" in flags
虽然这项技术有效,但我希望有更好的方法来完成最后一部分,即根据输入中包含的标志设置选项。我也不是 100% 确定这是使用 run()
方法的好方法。任何的意见都将会有帮助!谢谢!
看看标准库 argparse
模块。它可以满足您的需求,而且功能更多。
正如 jetpack_guy 所说,argparse
是完成此类事情的最佳方式。这个库有很多功能,但这里是如何根据您需要的参数创建布尔值。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-r', action='store_true')
parser.add_argument('-f', action='store_true')
parser.add_argument('-s', action='store_true')
parser.add_argument('-e', action='store_true')
args = parser.parse_args()
print(args.r)
print(args.f)
print(args.s)
print(args.e)
python test.py -r
会产生 r: True, f: False, s: False, e: False
python test.py -r -f -s
会产生 r: True, f: True, s: True, e: False
python test.py -rsf
会产生 r: True, f: True, s: True, e: False
我有一个正在处理的项目,我想将来自用户输入的可能标志(例如“-s”)传递到布尔列表中,从中我可以找到用户请求的特定选项。
我目前的代码:
def run():
running = True
while running:
user_input = input()
dir_path = find_file_name(user_input[2:])
flags = get_action(dir_path[1])
file_dump = []
options = [False] * 6
if user_input[0] == "Q":
running = False
break
elif user_input[0] == "L":
options[0] = "-r" in flags
options[1] = "-f" in flags
options[2] = "-s" in flags
options[3] = "-e" in flags
虽然这项技术有效,但我希望有更好的方法来完成最后一部分,即根据输入中包含的标志设置选项。我也不是 100% 确定这是使用 run()
方法的好方法。任何的意见都将会有帮助!谢谢!
看看标准库 argparse
模块。它可以满足您的需求,而且功能更多。
正如 jetpack_guy 所说,argparse
是完成此类事情的最佳方式。这个库有很多功能,但这里是如何根据您需要的参数创建布尔值。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-r', action='store_true')
parser.add_argument('-f', action='store_true')
parser.add_argument('-s', action='store_true')
parser.add_argument('-e', action='store_true')
args = parser.parse_args()
print(args.r)
print(args.f)
print(args.s)
print(args.e)
python test.py -r
会产生 r: True, f: False, s: False, e: False
python test.py -r -f -s
会产生 r: True, f: True, s: True, e: False
python test.py -rsf
会产生 r: True, f: True, s: True, e: False