栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

接受文件对象或路径的Python函数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

接受文件对象或路径的Python函数

关于您的代码的奇怪之处在于,如果将它传递给一个打开的文件,它将关闭它。不好 不管打开该文件的任何代码,都应负责关闭该文件。但是,这会使函数更加复杂:

def awesome_parse(path_or_file):    if isinstance(path_or_file, basestring):        f = file_to_close = open(path_or_file, 'rb')    else:        f = path_or_file        file_to_close = None    try:        return do_stuff(f)    finally:        if file_to_close: file_to_close.close()

您可以通过编写自己的上下文管理器来抽象它:

@contextlib.contextmanagerdef awesome_open(path_or_file):    if isinstance(path_or_file, basestring):        f = file_to_close = open(path_or_file, 'rb')    else:        f = path_or_file        file_to_close = None    try:        yield f    finally:        if file_to_close: file_to_close.close()def awesome_parse(path_or_file):    with awesome_open(path_or_file) as f:        return do_stuff(f)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/668199.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号