- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
如果我尝试在 python 中运行 .ls
,毫不奇怪我会得到 SyntaxError
>>> .ls
File "<stdin>", line 1
.ls
^
SyntaxError: invalid syntax
但是如果我导入 PyROOT,它会以某种方式使此语法合法(并且表现与在 ROOT 中一样,列出当前文件的内容;在此处的示例中我没有打开任何文件。)
>>> import ROOT
>>> .ls
>>>
类似地,.q
在我导入 ROOT 后退出 Python 解释器,就像在普通 ROOT 解释器中一样。
这是如何工作的?
最佳答案
它可以在 lib/ROOT.py 中找到
有一个条件,如果不是 ipython,则 sys.excepthook 被重新定义:
sys.excepthook = _excepthook
依次包含以下内容:
### RINT command emulation
------------------------------------------------------
def _excepthook( exctype, value, traceb ):
# catch syntax errors only (they contain the full line)
if isinstance( value, SyntaxError ) and value.text:
cmd, arg = split( value.text[:-1] )
# mimic ROOT/CINT commands
if cmd == '.q':
sys.exit( 0 )
或以下几行:
elif cmd == '.ls':
return sys.modules[ __name__ ].gDirectory.ls()
如果这些都不起作用,它会恢复正常处理事情。
关于python - PyROOT 是如何改变 python 解释器的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37738012/
我正在进行中微子研究,这需要我通过叠加直方图进行数据分析。我们正在使用 ROOT。我目前正在尝试将以下代码从 C++ 转换为 pyroot: #include "TFile.h" #include "
我想在 virtualenv 中使用 pyROOT,我的系统上安装了 ROOT,当在 virtualenv 之外时我可以做 import ROOT 它可以工作,但是在 virtualenv 中执行 i
我想创建类来处理 TTree: from ROOT import * from Exceptions import * import os.path class NTupleHandler:
我对 pyroot 有疑问。当我尝试导入 ROOT 直方图时,我总是得到相同的 AttributeError。 >>> from ROOT import TH1F AttributeError: ty
我正在关注有关 Python 的 Flask 微框架的分步教程博客。当他们要求我在应用程序文件夹的根目录中“设置”配置文件时,我遇到了一个问题,以便在需要时可以轻松访问它。他们将其称为 config.
我刚刚开始使用 pyroot 读取根文件,但无法使用 jupyter 笔记本从文件中读取数据。 TBrowser 的外观如下: 我是这样开始的: import ROOT as root import
如果我尝试在 python 中运行 .ls,毫不奇怪我会得到 SyntaxError >>> .ls File "", line 1 .ls ^ SyntaxError: inva
我下载了 madpgraph5,但是当我运行它时出现以下错误: ERROR: ROOT file called 'ROOT.py' or 'ROOT.pyc' is not found ERR
在 PyROOT 中,很容易从树中读取值,即打印叶子 val : file = TFile('file.root') tree = file.Get('tree') for entry in tree
我正在尝试使用 python 简单地定义一个 Root TTree 并给它一个 TBranch。听起来很合理,对吧?我试过: from ROOT import * myvar = int() mytr
我在安装rootpy时遇到了一个大问题。当我尝试这个命令时: sudo pip install rootpy 我收到此错误消息: ROOT cannot be imported. Is ROOT in
我正在尝试使用 pyROOT 在 python 中为 TTree(一个 ROOT 对象)制作过滤器.我从具有多个分支的 TTree 获取信息,其中一些是 C++ 类型 vector , vector或
我是一名优秀的程序员,十分优秀!