标签: python
argumentparser可以获取文件类型参数并直接打开文件,例如:
parser.add_argument('infile', nargs='?', type=argparse.FileType('r')) args = parser.parse_args().__dict__ input = args['infile'].readlines()
我是否需要在我的计划中关闭args['infile']?辩论者会为我关闭吗?我没有在文件中找到任何提及此内容。
args['infile']
答案 0 :(得分:2)
不,它不会关闭文件类型对象..请参阅this
此处的问题是FileType可能会返回stdin或stdout,因此它不能始终关闭文件对象。
FileType
stdin
stdout
大量未封闭的文件句柄可能会导致某些操作系统出现问题,但就是这样。从好的方面来说,argparse接受其类型参数的事实是任何可以检查和转换字符串输入的可调用都是简单,干净且有效。
另请参阅this
答案 1 :(得分:0)
source中的一些挖掘表明它并没有为你关闭它。这是有道理的,因为它还必须打开文件进行编写,你可能不希望它关闭它们。