我只建议设置nargs='?',然后分别处理Nonetype的情况。根据官方文档,“ FileType对象了解伪参数'-',并针对可读FileType对象将其自动转换为sys.stdin,对于可写FileType对象将其自动转换为sys.stdout”。因此,如果您想要标准输入,只需给它一个破折号。例子import argparseimport sysparser = argparse.ArgumentParser()parser.add_argument('inputfile', nargs='?', type=argparse.FileType('r'))if not inputfile: sys.exit("Please provide an input file, or pipe it via stdin")