我正在编写一个输出列表的程序。假设这个列表可以有数百个项目。我想使用 argparse 传入一个选项来指定输出中显示的项目数,默认为 15 行。如何获得在我的函数中作为变量传递的选项?
def get_args(argv = None):
parser = argparse.ArgumentParser()
parser.add_argument(
# ...omitted code for other options
parser.add_argument(
'-n',
'--noutput',
default = 15,
type = int,
help = 'Number of lines in output'
)
return parser.parse_args(argv)
def scramble_words():
"""
Shuffle words in new_list
Print reordered words by newline
"""
random.shuffle(new_list)
print( )
print("\n\n".join(new_list[:--noutput]))
最佳答案
另一个选项是使用Click用于创建命令行选项的包。我个人觉得比较直观。
import click
@click.command()
@click.option('-n', '--noutput')
def driver(noutput):
print(noutput)
def scramble_words(noutput):
"""
Shuffle words in new_list
Print reordered words by newline
"""
new_list=['a', 'b', 'c', 'd', 'e']
random.shuffle(new_list)
print( )
print("\n\n".join(new_list[:--noutput]))
if __name__ == "__main__":
driver()
如果您想坚持使用 argparse,可以按照以下方法将参数传递给函数。我对您可能如何使用代码做了一些假设。
import sys
import argparse
import random
def get_args(argv = None):
parser = argparse.ArgumentParser()
parser.add_argument(
'-n',
'--noutput',
default = 15,
type = int,
help = 'Number of lines in output'
)
return parser.parse_args()
def scramble_words(noutput):
"""
Shuffle words in new_list
Print reordered words by newline
"""
new_list=['a', 'b', 'c', 'd', 'e']
random.shuffle(new_list)
print( )
print("\n\n".join(new_list[:--noutput]))
if __name__ == "__main__":
args = get_args(sys.argv)
scramble_words(args.noutput)
关于python - 使用 argparse 传入输出行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53999537/