python - 使用 argparse 传入输出行数

标签 python argparse

我正在编写一个输出列表的程序。假设这个列表可以有数百个项目。我想使用 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/

相关文章:

python - ArgumentParser 结语和描述格式与 ArgumentDefaultsHelpFormatter 结合使用

python - argparse 一个参数而不是其他几个参数

python - try-except-else 语句的用例

python - 使用 easyxf 在 xlwt 中进行文本对齐

Python的argparse从几个可选参数中选择一个

python - 脚本如何用作命令行应用程序或模块

python - 当我运行程序时,为什么 python 会出现错误“需要缩进 block ?”

python - 使用 Python 3.x 添加特定大小的列

python - 具有 tf.contrib.losses.metric_learning.triplet_semihard_loss 断言错误的 keras 模型

python - 确定使用什么子解析器