我正在定义一个上下文管理器类,并且如果实例化过程中满足某些条件,我希望能够跳过代码块而不会引发异常。例如,
class My_Context(object):
def __init__(self,mode=0):
"""
if mode = 0, proceed as normal
if mode = 1, do not execute block
"""
self.mode=mode
def __enter__(self):
if self.mode==1:
print 'Exiting...'
CODE TO EXIT PREMATURELY
def __exit__(self, type, value, traceback):
print 'Exiting...'
with My_Context(mode=1):
print 'Executing block of codes...'
如果您想要一个临时解决方案,它使用withhacks(特别是来自AnonymousBlocksInPython)的思想,那么它将起作用:
import sys
import inspect
class My_Context(object):
def __init__(self,mode=0):
"""
if mode = 0, proceed as normal
if mode = 1, do not execute block
"""
self.mode=mode
def __enter__(self):
if self.mode==1:
print 'Met block-skipping criterion ...'
# Do some magic
sys.settrace(lambda *args, **keys: None)
frame = inspect.currentframe(1)
frame.f_trace = self.trace
def trace(self, frame, event, arg):
raise
def __exit__(self, type, value, traceback):
print 'Exiting context ...'
return True
比较以下内容:
with My_Context(mode=1):
print 'Executing block of code ...'
与
with My_Context(mode=0):
print 'Executing block of code ... '
问题内容: 在阅读语句(链接)的规范时,我想尝试一些事情。这不是针对任何生产代码或任何内容的,我只是在探索,因此,如果这是一个坏主意,请不要太苛刻。 我想做的是在上面的链接文档中抓取一个名为“ BLOCK”的片段,然后在对的调用中进行修改。(在动机和总结部分开始之后,请参阅链接的文档。) 这个想法是创建我自己的即时本地命名空间。像这样: 基本上,我希望块内的语句从属于的局部变量和分配约定。 在我的
我创建了一个包含两种登录机制的项目: > < li> 第一个是使用简单登录页面的第一个认证机制(使用函数< code>findUser从数据库中获取用户(如果存在)) 第二种认证机制是JAAS提供的登录机制(j_security_check) 基本上,我试图实现这个目标:当用户成功进行身份验证(在第一个登录页面中)时,他应该能够跳过第二页登录(由JAAS提供),而不必在登录表单中重新输入他的用户名
我有一个由mysql数据库支持的dropwizard应用程序。我正在使用liquibase包装器进行数据库迁移 首先,我使用“db dump”命令自动生成迁移。xml文件。 现在我正在重构数据库,我希望能够更新特定的列名和表的名称。 我使用先决条件跳过已经生成的表以跳过“”命令 现在如何跳过主键和外键约束的执行?在变更日志级别是否有一个先决条件可以用来表示“跳过已执行的变更集”?或者我只是创建一个
问题内容: 我们需要能够在某些环境中跳过子模块。 有问题的模块包含集成测试,并且需要半小时才能运行。因此,我们希望在CI服务器上进行构建时将其包括在内,但是当开发人员在本地进行构建(并运行测试)时,我们希望跳过该模块。 有没有办法通过配置文件设置来做到这一点?我已经进行了一些谷歌搜索,并在这里查看了其他问题/答案,但没有找到一个好的解决方案。 我想一个选择是从父级中完全删除该子模块,然后在CI服务
在以前的版本中,我刚刚能够生成这样的新组件。。。 错误:多个模块匹配。使用skip-import选项跳过将组件导入最近的模块。 然后我试着。。。 错误:指定模块不存在 然后我试着。。。 错误:指定模块不存在
我得到了 我错过了什么?