从回溯中获取最后一个函数的调用参数?

2023-12-04

我可以获取回溯中最后调用的函数的参数吗?如何?

我想制作一个标准错误捕获器,以生成可读的代码,同时向用户提供详细信息。

在下面的示例中,我希望 GET_PARAMS 返回提供给 os.chown 的参数元组。检查inspectAlex Martelli 建议的模块,我找不到。

def catch_errors(fn):
    def decorator(*args, **kwargs):
        try:
            return fn(*args, **kwargs)
        except (IOError, OSError):
            msg = sys.exc_info()[2].tb_frame.f_locals['error_message']
            quit(msg.format(SEQUENCE_OF_PARAMETERS_OF_THE_LAST_FUNCTION_CALLED)\
            + '\nError #{0[0]}: {0[1]}'.format(sys.exc_info()[1].args), 1)
    return decorator

@catch_errors
def do_your_job():
    error_message = 'Can\'t change folder ownership \'{0}\' (uid:{1}, gid:{2})'
    os.chown('/root', 1000, 1000) # note that params aren't named vars.

if __name == '__main__' and os.getenv('USERNAME') != 'root':
    do_your_job()

(谢谢吉姆·罗伯特对于装饰者)


对于此类检查任务,始终首先考虑模块inspect在标准库中。这里,检查.getargvalues给出给定框架的参数值,并且检查.getinnerframes为您提供回溯对象中感兴趣的帧。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从回溯中获取最后一个函数的调用参数? 的相关文章

  • 查找公因数以将浮点数列表转换为整数列表

    我有一个来自其他函数的浮点数列表 我所知道的是 在理想世界中存在一个共同因素 可用于将每一项相乘以获得整数列表 可能存在一些小的数值噪声 1e 14 例如 2 3333333333333335 4 666666666666667 1 0 1
  • 如何在 Python 中使这个随机文本生成器更加高效?

    我正在研究一个随机文本生成器 不使用马尔可夫链 目前它的工作没有太多问题 首先 这是我的代码流程 输入一个句子作为输入 这称为触发字符串 被分配给一个变量 获取触发字符串中最长的单词 在所有古腾堡计划数据库中搜索包含该单词的句子 无论大写还
  • 为什么 Python zipfile 不提供与命令行 zip 相同的输出 .zip 文件大小?

    这是生成的文件的大小zip seq 10000 gt 1 txt zip 1 1 txt adding 1 txt deflated 54 ls og 1 zip rw r r 1 22762 Aug 29 10 04 1 zip 这是一个
  • 使用 pycharm 进行交互式 shell 调试

    我是 PyCharm 新手 我已经使用 IDLE 很长时间了 在IDLE中执行脚本后使用Python对象非常方便 有没有办法在使用 PyCharm 与交互式 python shell 执行后使用脚本对象 例如 我们有一个 测试 项目 其中包
  • 使用列中的日期范围扩展 pandas 数据框

    我有一个 pandas 数据框 其日期和字符串与此类似 Start End Note Item 2016 10 22 2016 11 05 Z A 2017 02 11 2017 02 25 W B 我需要将其扩展 转换为以下内容 在之间填
  • 有没有纯Python的表类?

    我正在构建一个需要分析表格数据的应用程序 我想执行一些列操作 例如重命名列 删除列以及根据现有列的值计算新列的能力 我的第一选择是 Pandas 之类的东西 但是一个限制是这个项目必须是跨平台的并且非常容易在 virtualenv 中部署
  • Windows 7 64位 libsvm 和 python 错误:找不到函数“svm_get_sv_indices”

    我正在使用 Windows 7 64 位 我已经安装了 Python 2 7 3 32 位版本 和 libsvm 3 13 当我尝试启动导入 svmutil 的简单 py 文件时 出现错误 C libsvm 3 13 python gt p
  • 使用 python 将 bibtex 文件转换为 html (也许是 pybtex?)

    您好 我想解析 bibtex 出版物文件并对特定字段 例如年份 进行排序并过滤某些内容 然后将其放在网站上 我遇到了 pybtex 它可以读取和解析 bibtex 文件 但它基本上没有记录 我不知道如何对条目进行排序 pybtex 是可行的
  • 回归模型 statsmodel python

    这更多是一个统计问题 因为代码运行良好 但我正在学习 python 中的回归建模 我在下面使用 statsmodel 编写了一些代码来创建一个简单的线性回归模型 import statsmodels api as sm import num
  • C++异常,what()可以为NULL吗?

    捕获的 std Exception 是否可以使 What 为 NULL 对 e what 的检查是否低于开销 catch const std exception e std string error if e what error e wh
  • lxml/python 使用 CDATA 部分读取 xml

    在我的 xml 中我有一个CDATA部分 我想保留 CDATA 部分 然后剥离它 有人可以帮忙解决以下问题吗 默认不起作用 from io import StringIO from lxml import etree xml
  • 确定列的累积最大值

    我正在尝试以下代码 df pd DataFrame 23 52 36 49 52 61 75 82 97 12 columns A B df C np where df A gt df C shift df A df C shift pri
  • Python:像石英一样的事件调度程序[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • python-messaging 无法处理 HTTP 请求

    我正在使用下面的代码尝试使用 python messaging 发送彩信https github com pmarti python messaging blob master doc tutorial mms rst https gith
  • pyqt4窗口调整大小事件

    我正在使用 python3 和 pyqt4 我希望每次运行时都会运行一些代码QMainWindow已调整大小 我想要这样的东西 self window resized connect self resize but resized不是内置函
  • Python Sqlite3 获取 Sqlite 连接路径

    给定一个 sqlite3 连接对象 如何检索 sqlite3 文件的文件路径 The Python 连接对象 http github com python cpython blob master Modules sqlite connect
  • 在 Python 中,如果我有 unix 时间戳,如何将其插入 MySQL 日期时间字段?

    我正在使用 Python MySQLDB 我想将其插入 Mysql 中的 DATETIME 字段 我该如何使用cursor execute 来做到这一点 要将 UNIX 时间戳转换为 Python 日期时间对象 请使用datetime fr
  • Python 单元测试:Nose 失败时重试?

    我有一个随机失败的测试 我想让它在发送错误消息之前重试多次 我将 python 与 Nose 一起使用 我写了以下内容 但不幸的是 即使使用 try except 处理 当第一次尝试测试失败时 Nose 也会返回错误 def test so
  • python 根据日期创建目录结构

    我使用以下函数根据今天的日期创建目录 usr bin python import time datetime os today datetime date today todaystr today isoformat os mkdir to
  • Python google云函数部署失败-Madmom pip包

    我正在尝试使用 madmom python pip 包部署 Python3 7 Google Cloud Function 但是指定madmom 0 16 1requirements txt 中的内容导致部署失败 当我从requiremen

随机推荐

  • Android 谷歌地图 java.lang.NoClassDefFoundError: 解析失败: Lorg/apache/http/ProtocolVersion

    我正在使用 Google 地图 Android SDK 11 6 2 也尝试过 15 0 1 但在地图显示之前出现以下崩溃 已检查清单中的API密钥 它是可用的 但仍然出现此问题 我的 targetSDk 版本为 28 是否会导致此问题 j
  • 如何获取表或视图中的列列表?

    有时 我有兴趣获取 SQL Server 2008 R2 数据库中的一个表或视图中的列列表 例如 如果您在不使用昂贵的现成产品的情况下构建数据库文档 那么它很有用 获取此信息的简单方法是什么 另一种方法是查询 INFORMATION SCH
  • 在 Unity 中打电话?

    我在我的 C 脚本中使用了 Application OpenURL tel 79011111115 出现拨号器 但未拨打电话 如果是 Java 我可以说它的工作原理如下 Intent call new Intent Intent ACTIO
  • 如果对象返回为空字符串而不是空结构,如何解组 json 对象

    我收到一些 JSON 数据 但如果对象为空 它不会返回空结构 而是返回空 字符串代替 并且在解组时 它返回一个错误 所以而不是数据 key is key 即使使用 omitempty 字段也不起作用 例子 https play golang
  • 将数据从 PostgreSQL 传输到 MySQL

    您好 有什么方法可以将表布局和数据从 Postgres 数据库自动传输到 MySQL 吗 我必须将架构和数据迁移到 MYSQL 最简单的可能是使用 Postgres 将数据库 架构和数据 导出为 SQLpg dump效用 那么import将
  • 实体框架 4:多对多关系 IQueryable 而不是 ICollection

    大家 早安 我试图首先解决我在 EF 代码中遇到的问题 我的架构如下 public class Article IUrlNode Key public Guid ArticleID get set public string Title g
  • 为什么arguments.callee.caller.name未定义?

    为什么这不提醒 http 127 0 0 1 sendRequest 可在http jsfiddle net Gq8Wd 52 var foo sendRequest function alert bar getUrl var bar ge
  • docker: MISCONF Redis配置为保存RDB快照

    与此类似的问题还有很多 例如 Redis配置为保存RDB快照 但目前无法持久保存在磁盘上 Ubuntu Server MISCONF Redis 配置为保存 RDB 快照 但目前无法保留在磁盘上 可能修改数据集的命令被禁用 但这些都不能解决
  • 具有不同构造函数参数的装饰器

    我想使用温莎城堡创建一个记录整数的类 但我想用其他类来装饰它几次 如果涉及的所有具体实体都具有可以解决的依赖关系 我可以看到这是如何工作的 但这里的情况并非如此 考虑这段代码 public interface IRecorder void
  • 通过用麦克风录制播放声音来测量扬声器音量

    我想通过播放声音并同时在本地麦克风上收听来测量系统的扬声器音量 这是针对特定应用的 准确记录的声音并不重要 重要的是区分播放声音之前和播放过程中记录的麦克风音量 这个想法是在扬声器关闭或声音太低时警告用户 如何在播放声音时录制声音并确定音量
  • jQuery Zoom 在颜色框内

    是否可以在 colorbox 中使用 Jack Moore 的 jQuery Zoom 插件 document ready function a photo zoom url photo big jpg 我很确定你可以这样做 a color
  • 我如何在 Haskell 中使用lens来复制Python的枚举?

    蟒蛇的枚举在列表上可以写成zip 0 我查看了 Control Lens Traversal 和 Control Lens Indexed 但我无法弄清楚如何使用镜头将其推广到任何合理的容器 我犹豫是否要说 可遍历 我正在猜测itraver
  • 更改对象上的修改子句错误

    我怎样才能 用达夫尼语 陈述 ensures 保证方法返回的对象将是 新的 即不会与其他地方使用的对象相同 尚未 以下代码显示了一个最小的示例 method newArray a array
  • 使用 Google GCM 发送推送通知

    我一直在关注设置 GCM 客户端应用程序教程并尝试了解他们提供的演示应用程序 但我无法理解如何使用此服务发送推送通知 上述指南引导我进入 生成 InstanceID 令牌 屏幕 其中有永无休止的进度条 该程序源码可以在这里获取 https
  • 如何将目录树添加到 ClearCase 存储库?

    我有一个包含子目录的目录树 我想将其添加到 ClearCase 存储库中 目前我需要重命名目录 对每个目录使用 CC 的 mkdir 等等 有没有办法自动执行此操作 可能是我不知道的 ClearCase 命令 或者脚本 我建议使用clear
  • 从字符串 Pandas 数据框中提取日期

    我在 pandas 数据框中有这一列 Date X 它是一个对象 我无法在这里使用 pandas to datetime 函数 我想将此列转换为 1 到 365 的范围 以便我可以进行分析 29JAN14 21 16 00 01FEB14
  • 使用 jspdf 导出 PDF 而不渲染 CSS

    我正在使用 jspdf debug js 从网站导出不同的数据 但存在一些问题 我无法让它在导出的 PDF 中渲染 CSS 如果我在导出的页面中有图像 则PDF 返回空白 有谁知道解决这个问题的方法吗 这里有一个jsfiddle显示它没有渲
  • Axhspan 始终位于图形前面

    我正在尝试用分散的点绘制一个图 我想显示 xy 计划中的特定区域 我已经了解了如何使用 axhspan 和 axvspan 但它产生的彩色区域总是隐藏我的观点 我的意思是 我可以看到我的点将 alpha 设置为不同于 alpha 的值 但它
  • Winform ToolTip位置设置

    我想知道是否可以通过 MouseHover 事件以某种方式在空桌面上的固定点中在应用程序表单之外找到工具提示的弹出窗口 当然事件是否对工具提示有用 不确定 或者任何其他方式 如果可能的话 我并不是询问如何显示另一个表单作为实现此目标的选项
  • 从回溯中获取最后一个函数的调用参数?

    我可以获取回溯中最后调用的函数的参数吗 如何 我想制作一个标准错误捕获器 以生成可读的代码 同时向用户提供详细信息 在下面的示例中 我希望 GET PARAMS 返回提供给 os chown 的参数元组 检查inspectAlex Mart