小编Dra*_*ave的帖子

isinstance没有导入候选人

我们有一个函数,它接受各种不同类型的输入:函数,字符串,编译的正则表达式,Hamcrest匹配器,并根据输入的类型适当地过滤列表.

我们目前正在使用isinstance(our_filter, hamcrest.matcher.Matcher),但这需要我们安装Hamcrest.

我们正在考虑使用字符串匹配inspect.getmro(type(POSSIBLE_MATCHER)); 但这感觉不洁净.import语句可能还有try/ except周围的选项.

什么是最好的方法?


在@dblslash的帮助下,这是迄今为止我所做的最好的:

[x.__module__+"."+x.__name__ for x in inspect.getmro(type(POSSIBLE_MATCHER))] ['hamcrest.core.core.isequal.IsEqual', 'hamcrest.core.base_matcher.BaseMatcher', 'hamcrest.core.matcher.Matcher', 'hamcrest.core.selfdescribing.SelfDescribing', '__builtin__.object']

python class hamcrest inspect isinstance

12
推荐指数
2
解决办法
1646
查看次数

确定scrapy根目录

我希望能够读取相对于scrapy根目录的文件,如文档所述.

有没有办法从蜘蛛内部确定这条路径?

python screen-scraping scrapy

4
推荐指数
2
解决办法
2128
查看次数

最终尝试屈服-我们提出了例外吗?

TL; DR

是否可以在finally子句中找到是否存在未捕获的异常?

背景

我想遍历项目以对其进行一些相对昂贵的处理,这很可能会中断并引发异常。所以我想保存我的位置。但是保存状态也非常昂贵-因此,我宁愿不要每次都这样做,只是当我屈服于的代码中有异常时

我在想一些形状模糊的东西:

def get_things(my_iterator):
    for items in my_iterator:
        try:
            yield item
        finally:
            if something_went_wrong():  # magic oracle function for failure
                save_state(item)
        continue_normal_processing()
Run Code Online (Sandbox Code Playgroud)

但我不知道那是否有可能。值得注意的是,except Exception:不会引发任何事情,因为此函数中没有异常。

python yield exception-handling finally

3
推荐指数
1
解决办法
3914
查看次数