当前位置: 首页 > 面试题库 >

告诉python是否处于-i模式

邹弘
2023-03-14
问题内容

如何判断-i标志是否已启动python?

根据docs,您可以检查os.environ中的PYTHONINSPECT变量,它 等效
于-i。但显然,它的工作方式不同。

作品:

$ PYTHONINSPECT=1 python -c 'import os; print os.environ["PYTHONINSPECT"]'

不起作用:

$ python -i -c 'import os; print os.environ["PYTHONINSPECT"]'

我问的原因是因为如果某些条件失败,我有一个脚本调用sys.exit(-1)。很好,但是有时候我想使用-i手动调试它。我想我可以学会使用“
PYTHONINSPECT = 1 python”而不是“ python -i”,但是如果有一种通用的方法,那就太好了。


问题答案:

如何以编程方式设置检查模式

@Jweede链接
提供答案不准确。它应该是:

import os
os.environ['PYTHONINSPECT'] = '1'

如何检索是否设置了交互/检查标志

@Brian答案的另一种形式:

import os
from ctypes import POINTER, c_int, cast, pythonapi

def in_interactive_inspect_mode():
    """Whether '-i' option is present or PYTHONINSPECT is not empty."""
    if os.environ.get('PYTHONINSPECT'): return True
    iflag_ptr = cast(pythonapi.Py_InteractiveFlag, POINTER(c_int))
    #NOTE: in Python 2.6+ ctypes.pythonapi.Py_InspectFlag > 0
    #      when PYTHONINSPECT set or '-i' is present 
    return iflag_ptr.contents.value != 0

见Python的main.c中。



 类似资料:
  • 问题内容: 在Python脚本中,是否有任何方法可以判断解释器是否处于交互模式?这将很有用,例如,当您运行交互式Python会话并导入模块时,将执行略有不同的代码(例如,关闭日志记录)。 我已经看过判断python是否处于-i模式并在那里尝试了代码,但是,该函数仅在使用- i标志调用了Python的情况下才返回true,而在用于调用交互模式的命令没有参数时则返回true 。 我的意思是这样的: 问

  • 我有一个相当大的bean(~100个属性),映射到几个较小的对象中。可能会出现这样的情况:较小的目标对象的属性与我的源bean中的名称相同,但语义不同。 我希望MapSTRt在这个特定的情况下只映射我使用注释显式告诉的内容,而不执行通常的自动映射。 MapStruct文档告诉我: 在生成的方法实现中,源类型(…)的所有可读属性将被复制到目标类型(…)中的相应属性中。 我没有找到任何配置选项来关闭此

  • 我对编程很陌生。我想检查字符串s是否包含a-z字符。我使用: 但有没有办法用更短的代码来完成这一点?非常感谢

  • 本文向大家介绍一个小示例告诉你Python语言的优雅之处,包括了一个小示例告诉你Python语言的优雅之处的使用技巧和注意事项,需要的朋友参考一下 比如, 我们希望希望检测"一段string是否以特定的字符串结尾?", 通常我们使用: 十分丑陋是吧? 如果我们检测变量needle是否是以下特定字符串之一的话, 会这样写: 但是, 我们无法在 endswith function 中使用 in, 但我

  • 问题内容: 我试图用谷歌搜索,但找不到方法 我有一个t-sql脚本,该脚本将新列添加到表中,然后根据该表中其他列的值填充该列,最后删除一些列。这一切都很好。 当我想再次运行脚本时,会出现问题。我有一个if子句,用于检查缺少的列是否存在,但是即使if子句中的代码未运行,SSMS仍会抱怨并显示错误消息。该脚本必须能够再运行一次,并且我不希望显示错误消息! 在代码中(显然是测试代码,不想在此处转储生产代