KeyError 中错误消息的新行 - Python 3.3

2023-11-23

我通过 IDLE 使用 Python 3.3。运行如下代码时:

raise KeyError('This is a \n Line break')

它输出:

Traceback (most recent call last):
  File "test.py", line 4, in <module>
    raise KeyError('This is a \n Line break')
KeyError: 'This is a \n Line break'

我希望它输出带有换行符的消息,如下所示:

This is a
 Line Break

我曾尝试在 os.linesep 之前或使用 os.linesep 将其转换为字符串,但似乎没有任何效果。有什么方法可以强制消息在 IDLE 上正确显示吗?


如果我提出Exception(代替KeyError)那么输出就是我想要的,但我仍然想提出KeyError如果可能的话。


你的问题与IDLE无关。你看到的行为全部来自Python。从命令行以交互方式运行当前存储库 CPython,我们会看到您报告的行为。

Python 3.7.0a2+ (heads/pr_3947:01eae2f721, Oct 22 2017, 14:06:43)
[MSC v.1900 32 bit (Intel)] on win32

>>> raise KeyError('This is a \n Line break')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'This is a \n Line break'
>>> s = 'This is a \n Line break'

>>> s
'This is a \n Line break'
>>> print(s)
This is a
 Line break
>>> raise Exception('This is a \n Line break')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
Exception: This is a
 Line break
>>> raise IndexError(s)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: This is a
 Line break
>>> try:
...   raise  KeyError('This is a \n Line break')
... except KeyError as e:
...   print(e)

'This is a \n Line break'
>>> try:
...   raise  KeyError('This is a \n Line break')
... except KeyError as e:
...   print(e.args[0])

This is a
 Line break

我不知道为什么 KeyError 的行为与 IndexError 不同,但打印 e.args[0] 应该适用于所有异常。

EDIT

造成差异的原因在这个旧的跟踪器问题,其中引用了评论KeyError源代码:

/* If args is a tuple of exactly one item, apply repr to args[0].
       This is done so that e.g. the exception raised by {}[''] prints
         KeyError: ''
       rather than the confusing
         KeyError
       alone.  The downside is that if KeyError is raised with an
explanatory
       string, that string will be displayed in quotes.  Too bad.
       If args is anything else, use the default BaseException__str__().
    */

该部分出现在KeyError_str对象定义在Objects/exceptions.cPython 源代码。

我将提到你的问题作为这种差异的另一种体现。

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

KeyError 中错误消息的新行 - Python 3.3 的相关文章

  • pip 安装在共享目录上(Windows)

    我尝试创建自己的 Pypi 存储库 尊重https www python org dev peps pep 0503 https www python org dev peps pep 0503 我的想法是将其放在共享目录中 我使用的是 W
  • 如何在Windows 10中备份anaconda环境?

    最近 由于某些错误的 conda 软件包升级 我的 anaconda 环境被破坏了 由于这次备份经验 我想备份我的 anaconda 环境 以便将来轻松恢复 我所做的备份是将整个文件夹压缩到C ProgramData Anaconda3 这
  • Thread 内调用协程

    是否可以使线程运行方法异步 以便它可以在其中执行协程 我意识到我正在混合范例 我正在尝试集成使用协程的第三方库 而我的项目使用线程 在考虑更新我的项目以使用协程之前 我想探索在线程中执行协程 下面是我的示例用例 其中我有一个线程 但我想从线
  • 使用 Python 从 SFTP 服务器下载时不要下载空文件夹

    我在这个网站上得到了一个用Python递归下载文件的代码 此代码还会下载服务器上的空目录 请帮助我修改此代码 以便它不会从服务器下载空目录 我的代码 基于来自 Linux 的 Python pysftp get r 在 Linux 上工作正
  • 如何在 Python 中打印异常?

    如何打印错误 异常except block try except print exception 对于 Python 2 6 及更高版本和 Python 3 x except Exception as e print e 对于 Python
  • Cython 中固定大小的字节串序列

    我是 Cython 的新手 对 C 的经验很少 所以请耐心等待 我想存储固定大小的不可变字节对象序列 该对象看起来像 obj b abc b 1234 b 元组中的元素是不可变的 但它们的长度是任意的 我尝试的是以下内容 cdef char
  • type: 定义一个只能是某些字符串的类型?

    我怎样才能使用typing模块 创建一个可以是某些字符串的类型 例如 假设我需要一个类型CondOperator 可以是以下任何字符串 gt lt gt lt lt gt 我本来希望CondOperator String gt lt gt
  • python pip - 从本地目录安装

    由于 pypi 版本未更新 我必须下载 git python 存储库并安装 通常我会这样做 pip install mypackage pip install mypackage redis 现在我已将存储库克隆到以下文件夹中 选择 我的包
  • 在 python 中使用正则表达式返回唯一匹配

    生成正则表达式的所有唯一匹配项的最有效 或最 Pythonic 方法是什么 现在我刚刚申请set 使用后findall 但我不确定是否有更好的方法 查找所有匹配项的其他方法 使用其他方式通过正则表达式在文本中搜索 您可以与一路上获得的匹配项
  • 熊猫不工作:DataFrameGroupBy;面板分组依据

    我刚刚升级了 python 但无法让 pandas 正常运行 请参见下文 似乎没有任何效果 回溯 最近一次调用最后一次 文件 Library Frameworks Python framework Versions 3 8 lib pyth
  • AttributeError:尝试删除“/n”时“列表”对象没有属性“替换”

    我有一堆文件需要重命名 我在文本文件中按顺序排列了名称 并且需要删除读取文本文件时插入的换行符 但我不断收到此错误 AttributeError 尝试删除 n 时 列表 对象没有属性 替换 感谢任何和所有的帮助 我真的不知道我在做什么 fr
  • 如何构建可嵌入的 Python

    我想知道如何为 Windows 构建可嵌入的 Python 找不到该特定包的任何信息或构建配置 我问的原因是我可以在 Mac 和 Linux 上使用相同的变体 最近 我必须为 64 位 Python 3 5 6 构建一个可嵌入的 zip 因
  • 类型提示、链式赋值和多重赋值

    我想这两个问题是相关的 所以我将它们放在一起 1 是否可以在链式赋值中放置类型提示 这两次尝试都失败了 gt gt gt def foo a int b int c int a File
  • 在 Python 中计算稀疏 Gram 矩阵的最快方法是什么?

    格拉姆矩阵是结构矩阵X X T这当然是对称的 当处理稠密矩阵时 numpy dot产品实现足够智能 可以识别自乘以利用对称性 从而加快计算速度 请参阅this https stackoverflow com a 50734430 14440
  • 在 Pandas UDF PySpark 中传递多列

    我想计算 PySpark DataFrame 两列之间的 Jaro Winkler 距离 Jaro Winkler 距离可通过所有节点上的 pyjarowinkler 包获得 pyjarowinkler 的工作原理如下 from pyjar
  • Python DataFrame:将一列转置为多列

    我有一个如下所示的数据框 df pd DataFrame month 2017 09 27 2017 09 27 2017 09 28 2017 09 29 Cost 100 500 200 300 我怎样才能得到这样的 df 2017 0
  • 无法保存自定义子类模型

    灵感来自tf keras Model 子类化 https www tensorflow org guide keras model subclassing我创建了自定义模型 我可以训练它并获得成功的结果 但是我无法保存它 我使用 pytho
  • 如何在不使用太多内存的情况下打乱大型 csv 文件的行并将结果写入新的 csv 文件?

    因此 如果我有一个 csv 文件 如下所示 User Gender A M B F C F 然后我想编写另一个 csv 文件 其中行像这样打乱 作为示例 User Gender C F A M B F 我的问题是我不知道如何随机选择行并确保
  • 如何在 PHP 中获取有用的错误消息?

    我经常尝试运行 PHP 脚本 但只是得到一个空白屏幕 无错误信息 只是一个空屏幕 原因可能是一个简单的语法错误 错误的括号 缺少分号 或者函数调用失败 或者完全是其他原因 很难找出哪里出了问题 我最终注释掉了代码 在各处输入 echo 语句
  • 适用于 Python 的旧版本 Windows 二进制库 Wheel 的存储库?

    作为很多用户 我使用很棒的Christopher 的 Windows 二进制轮子 http www lfd uci edu gohlke pythonlibs vlfd当尝试在 Windows 上安装一些 python 包 例如 GDAL

随机推荐

  • 使用 lm(poly) 获取公式系数[重复]

    这个问题在这里已经有答案了 我正在尝试使用 lm poly 获得某些点的多项式回归 但对它返回的回归公式系数有一些疑问 像这样的样本 x seq 1 100 y x 2 3 x 7 fit lm y poly x 2 结果是 lm form
  • EPOLLRDHUP 不可靠

    我正在通过客户端 服务器 TCP 连接使用非阻塞读 写epoll wait 问题是 我无法使用以下方法可靠地检测 对等关闭连接 事件EPOLLRDHUP旗帜 经常会发生标志未设置的情况 客户端使用close 大多数时候 服务器从epoll
  • 如何在 CSS 选择器或 jQuery 中处理 XML 命名空间?

    我使用 jQuery 来解析 RSS 提要 我可以使用 AJAX 成功获取 RSS 提要 get podcast xml function data xml data xml 现在我可以通过使用获取播客的标题xml find channel
  • data.table fread如何忽略空行[重复]

    这个问题在这里已经有答案了 看起来如果文件中的第二行为空 则不会读取列名 我已经使用过文档中的 header skip 等开关 但无法使其工作 如果我的文件中的第二行为空 如何忽略这个事实并仍然将第一行读取为列名 第二行是空的 gt fre
  • 为什么使用 sys.path.append(path) 而不是 sys.path.insert(1, path)?

    Edit 根据 Ulf Rompe 的评论 使用 1 而不是 0 很重要 否则你会打破sys path 我已经做Python有一段时间了 一年多了 我总是很困惑为什么人们推荐你使用sys path append 代替sys path ins
  • 将应用程序更新至 iOS6

    在苹果开发者论坛上未能找到对此问题的准确答复 与其他 Apple 开发人员一样 我将升级我们的应用程序以支持 iOS6 设备 我已经下载了支持iOS6 SDK的XCode 4 5 我知道我无法使用此 XCode 版本将应用程序的版本提交到应
  • 使用 Java API 从 Elasticsearch 获取所有记录

    我正在尝试使用 Java API 从 Elasticsearch 获取所有记录 但我收到以下错误 n Wild Thing localhost 9300 索引 data read search phase dfs 嵌套 QueryPhase
  • python中“import a.b as b”和“from a import b”有什么区别[重复]

    这个问题在这里已经有答案了 我一直用from a import b但最近一个工作团队决定将一个模块移动到一个新的命名空间中 并发出警告通知 告诉人们更换import b with import a b as b 我从来没有用过import
  • SQL Server 如何处理超时请求?

    假设我使用 C 运行一个长时间运行的 SQL Server 存储过程 假设 30 分钟 进一步假设我在 C 中的查询上设置了 1 小时的超时期限 这样如果出于某种原因该 SP 花费的时间比预期长 我最终不会垄断数据库 最后 假设该存储过程中
  • 在...中找不到 JNI_OnLoad 跳过 init

    我在过去一天左右就收到了这条消息 到目前为止还没有造成任何问题 我早些时候让我的代码与我的本机库一起运行 但今天我添加了一些新功能 但它再次无法工作 LogCat 中没有显示任何错误 但我的程序只是在我的设备上立即打开和关闭 没有任何消息表
  • Jquery 移动粘性页脚

    我想要 Jquery Mobile 中的页脚 它不是固定的 但始终位于页面底部 像这样 http ryanfait com sticky footer 但在 JQuery Mobile 中 不像标准的 JQuery Mobile 固定页脚
  • 如何捕获滚动事件?

    我想实现无限滚动 下面是我的布局的简短形式 由于我有一些元素相对定位 因此 javascript 滚动事件不会触发 如何解决这个问题以便触发滚动事件并实现无限滚动 我的主要布局是 div div class wrapper div div
  • 如何获取站点的物理路径属性

    当我仅列出具有默认格式的站点时 它会显示物理路径 PS C Windows system32 gt sm Get IISServerManager PS C Windows system32 gt sm Sites Name ID Stat
  • 如何获取 WebKit 中所有受支持的 CSS 属性?

    在 Firefox Opera 和 IE 中我可以通过以下方式获取它们 gt gt for k in document body style console log k gt opacity background height textAl
  • 禁用列表视图的滚动并启用整个布局

    您好 我目前正在开发一个 Android 应用程序 它在主活动中有两个列表视图 我想要的是禁用两个列表的滚动并仅允许整个页面滚动 有什么方法可以帮助 我的代码 包com example listviewdemo import android
  • 禁用 Rails 中的资源预编译功能

    我想禁用 Rails 中的资产预编译功能 我正在开发用户可以下载代码的应用程序 我想避免更改下载的 html 文件中的 css 和 js 文件的名称 以便用户可以运行 index html 并查看所有内容 这是该应用程序 http impr
  • 在 Eclipse-CDT 中使用*相对*路径引用第 3 方库

    使用以下方式引用第 3 方 C 组件 例如包含 库 的最佳实践是什么relativeEclipse CDT 中的路径 我正在尝试参考 Boost 和 Google protobuf 我已将它们分别放在工作区的一个文件夹中 例如 home 用
  • 以编程方式设置按钮的边距

    我是 android 新手 陷入了一个非常基本的问题 我正在开发一个应用程序 其中我需要在 fling 上滑动图像 在每个图像上 我必须动态添加按钮 我正在使用 AddContentView 添加按钮来添加按钮一切工作正常 但我想动态设置按
  • 从客户端取消通过 WCF 长时间运行的任务

    我将 WCF 服务设置为 PerCall 我想知道如何从客户端发送 Start 调用来启动长时间运行的进程 并发送 Cancel 命令来取消它 我的 WCF 服务看起来像这样 ServiceBehavior InstanceContextM
  • KeyError 中错误消息的新行 - Python 3.3

    我通过 IDLE 使用 Python 3 3 运行如下代码时 raise KeyError This is a n Line break 它输出 Traceback most recent call last File test py li