9

argumentparser 可以采用文件类型参数并直接打开文件,例如:

parser.add_argument('infile', nargs='?', type=argparse.FileType('r'))
args = parser.parse_args().__dict__
input = args['infile'].readlines()

我需要args['infile']在我的程序中关闭吗?argumentparser 会为我关闭它吗?我没有在文档中找到任何地方提到这一点。

4

2 回答 2

5

不,它不会关闭文件类型对象.. 看到这个

这里的问题是它FileType可能会返回stdinor stdout,所以它不能总是关闭文件对象。

大量未关闭的文件句柄可能会给某些操作系统带来问题,但仅此而已。从好的方面来说,argparse 接受任何可以检查和转换字符串输入的可调用对象作为其类型参数这一事实简单、干净且有效。

也看看这个

于 2012-12-06T04:15:05.020 回答
1

对源代码的一些挖掘表明它不会为您关闭它。这是有道理的,因为它还必须打开文件进行写入,而您可能不希望它关闭这些文件。

于 2012-12-06T04:20:28.590 回答