小编Joh*_*ill的帖子

如何停止argparse.FileType创建指定为默认的文件

我喜欢这个argparse模块.argparse.FileType也是有帮助的,除非您希望默认值不是sys.std*因为即使您提供值也会创建默认输出文件.

例如:

parser.add_argument('--outfile', type=FileType('w'), default="out.txt")
Run Code Online (Sandbox Code Playgroud)

即使您使用--outfile指定文件,也会创建out.txt.

我能想到的最好的是:

class MagicFileType(object):

    def __init__(self, *args, **kwargs):

        # save args/kwargs and set filetype to None
        self.filetype = None
        self.args = args
        self.kwargs = kwargs

    def __getattr__(self, attr):
        """ Delegate everything to the filetype """

        # If we haven't created it, now is the time to do so
        if self.filetype is None:
            self.filetype = FileType(*self.args, **self.kwargs)
            self.filetype = self.filetype(self.filename)

        return getattr(self.filetype, attr)

    def __call__(self, filename):
        """ Just cache the …
Run Code Online (Sandbox Code Playgroud)

python argparse

8
推荐指数
1
解决办法
1241
查看次数

标签 统计

argparse ×1

python ×1