我喜欢这个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)