我发现了非常有用的语法。
parser.add_argument('-i', '--input-file', type=argparse.FileType('r'), default='-')
当我想要在程序中指定输入文件或使用标准输入(stdin)时,我需要这两种方式。然而,并不总是需要输入文件。如果我没有使用-i
或者重定向输入至其中之一
$ someprog | my_python_prog
$ my_python_prog < inputfile
我不想让我的Python程序等待输入。我希望它可以继续执行并使用默认值。
infile
呢?这些位置参数有什么必要呢?最后,为什么 OP 的代码不能正常工作?argparse
教程似乎暗示它应该可以很好地工作... - 2rs2tsinfile
specified first? — 参数的特定顺序只是一种惯例,通常第一个参数用于指定输入,第二个参数用于指定输出。为什么这些参数位置固定? — 因为作者的偏好。使用位置参数没有任何问题。在需要从标准输入读取并写入文件的情况下,可能会有点尴尬,例如app.py - outfile
,但除此之外,位置参数将正常工作。为什么 OP 的代码不起作用? — 它实际上运行得很好 :) - Mr. Deathless