FileType类型工厂执行代码所做的大部分工作,但消息机制略有不同:In [16]: parser=argparse.ArgumentParser()
In [17]: parser.add_argument('-f',type=argparse.FileType('r'))
In [18]: args=parser.parse_args(['-f','test.txt'])
In [19]: args
Out[19]: Namespace(f=<_io.textiowrapper name="test.txt" mode="r" encoding="UTF-8">)
In [20]: args.f.read()
Out[20]: ' 0.000000, 3.333333, 6.666667, 10.000000, 13.333333, 16.666667, 20.000000, 23.333333, 26.666667, 30.000000\n'
In [21]: args.f.close()
对于有效名称,它将打开文件,您可以使用并关闭该文件。但不能在with上下文中使用它。在
如果文件不存在,它将退出,并显示一条cant open消息。在
^{pr2}$
FileType__call__用argparse.ArgumentTypeError处理错误except OSError as e:
message = _("can't open '%s': %s")
raise ArgumentTypeError(message % (string