基于argparse的Python选择方法
我想根据CLI中的参数执行不同的方法。My基于argparse的Python选择方法,python,command-line-interface,argparse,Python,Command Line Interface,Argparse,我想根据CLI中的参数执行不同的方法。Mymain.py: from option import Option import argparse parser = argparse.ArgumentParser() parser.add_argument( "--word", "-w", help="Find score for word", type=str) args = parser.parse_args() option = Option() option.score_from_wor
main.py
:
from option import Option
import argparse
parser = argparse.ArgumentParser()
parser.add_argument( "--word", "-w", help="Find score for word", type=str)
args = parser.parse_args()
option = Option()
option.score_from_word(args.word)
class Option():
SCRABBLES_SCORES = [(1, "E A O I N R T L S U"), (2, "D G"), (3, "B C M P"),
(4, "F H V W Y"), (5, "K"), (8, "J X"), (10, "Q Z")]
global LETTER_SCORES
LETTER_SCORES = {letter: score for score, letters in SCRABBLES_SCORES
for letter in letters.split()}
def score_from_word(self,word):
score = 0
for w in word:
if w in LETTER_SCORES.keys():
score += LETTER_SCORES.get(w)
print(score)
def score_from_file(self):
file = [line.rstrip('\n') for line in open('dictionary.txt', "r")]
print(max(sum(LETTER_SCORES[c.upper()] for c in word) for word in file))
和Option.py
:
from option import Option
import argparse
parser = argparse.ArgumentParser()
parser.add_argument( "--word", "-w", help="Find score for word", type=str)
args = parser.parse_args()
option = Option()
option.score_from_word(args.word)
class Option():
SCRABBLES_SCORES = [(1, "E A O I N R T L S U"), (2, "D G"), (3, "B C M P"),
(4, "F H V W Y"), (5, "K"), (8, "J X"), (10, "Q Z")]
global LETTER_SCORES
LETTER_SCORES = {letter: score for score, letters in SCRABBLES_SCORES
for letter in letters.split()}
def score_from_word(self,word):
score = 0
for w in word:
if w in LETTER_SCORES.keys():
score += LETTER_SCORES.get(w)
print(score)
def score_from_file(self):
file = [line.rstrip('\n') for line in open('dictionary.txt', "r")]
print(max(sum(LETTER_SCORES[c.upper()] for c in word) for word in file))
如果在命令行中我写:python-wkot,它返回7,就可以了。但是如何添加另一个参数并取决于他选择其他方法来执行?只需添加另一个参数,并通过在args(
名称空间
)属性上进行测试来发现在这种情况下
from option import Option
import argparse
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument( "--word", "-w", help="Find score for word", type=str)
group.add_argument( "--file", "-f", help="Find score for words in file", action='store_true')
args = parser.parse_args()
option = Option()
if args.word:
option.score_from_word(args.word)
elif args.file:
option.score_from_file()
你能再解释一下你的意思吗?“但是如何添加另一个参数并取决于选择其他要执行的方法?”比方说,在命令行中,我编写了python main.py-w KOT,并从_word executes中获得了方法score_。但是如果我编写Python MIN .py-f,方法SCOREYOFFROXFILE将要考虑让这些选项与@ MISTIRU相互排斥,我没想到它会这么容易…但是在-f之后,我不想有任何其他的争论。与python main.py一样,f必须从文件返回最高分数