Argparse:设置默认文本文件

Argparse: set default text file

我希望将文本文件 rand.letter.txt 设置为该 argparse 段中的默认 word 文件,以便在程序中使用和读取。我认为这应该位于下方的第 4-5 行。我应该怎么做?

如您所见,我已经对矩阵大小进行了处理。但是对于具有 str 特征的文件,我很挣扎。

def main():
    print("WELCOME TO THE MEMORY PUZZLE!")

    parser = argparse.ArgumentParser(description="Memory game") 
    parser.add_argument("words_file", metavar="FILE", nargs=1,
                        help="Words file")

    parser.add_argument(
        "--matrix-size",
        metavar="SIZE",
        dest="matrix_size",
        help="Matrix size",
        default=6,
        type=int,
        )

    args = parser.parse_args()

    game = Game(args.words_file[0], args.matrix_size)
    game.play()

非常感谢您的帮助或意见!

如果您需要默认位置参数,您需要将 nargs 指定为 ?。如果可用,这将从命令行使用一个参数,否则将使用默认值。

parser.add_argument(
    "words_file", nargs="?", default="rand.letter.txt", help="Words file"
)

此外,当您初始化 game 时,您正在从 words_file 变量中切出第一个字符。您需要将其更改为:

game = Game(args.words_file, args.matrix_size)

注意 [0] 不见了。

如果要为位置设置默认值,则必须指定 nargs="?" Sourcenargs=1 在你的例子中似乎是多余的,因为它只产生一个项目的列表。所以你的行应该是这样的:

parser.add_argument("words_file", metavar="FILE", nargs="?",
                        default="rand.letter.txt", help="Words file")