【问题标题】:argumentparser close file argumentargumentparser 关闭文件参数
【发布时间】:2012-12-06 12:23:04
【问题描述】:

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

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

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

【问题讨论】:

    标签: python


    【解决方案1】:

    不,它不会关闭文件类型对象。请参阅this

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

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

    也看this

    【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 写完我也不想关闭它?
    • 你想你自己关闭它,但你不希望 argparse 关闭它,因为那样它会在你有机会使用之前立即关闭它——这将使 argparse 一开始就打开它毫无意义。
    猜你喜欢
    • 2013-01-18
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 1970-01-01
    • 2015-03-21
    • 2014-01-18
    • 1970-01-01
    相关资源
    最近更新 更多