IPython检测自动魔术

如果我写

ls *.txt

放入 IPython 笔记本中的单元格中,然后它会正确执行。但是,如果我尝试使用 转换单元格TransformerManager().transform_cell,则不会发生任何事情,并且会得到无效的 Python 语法:

>>> from IPython.core.inputtransformer2 import TransformerManager
>>> import ast
>>> TransformerManager().transform_cell('ls *.txt')
'ls *.txtn'
>>> ast.parse('ls *.txtn')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/ignoring_gravity/miniconda3/envs/tmp/lib/python3.8/ast.py", line 47, in parse
    return compile(source, filename, mode, flags,
  File "<unknown>", line 1
    ls *.txt
        ^
SyntaxError: invalid syntax

有没有办法以返回有效 Python 代码的方式转换 automagics?没有 automagic 的等效代码将转换如下:

>>> TransformerManager().transform_cell('!ls *.txt')
"get_ipython().system('ls *.txt')n"

我正在寻找的是一种无需运行代码即可检测自动魔术的方法

以上是IPython检测自动魔术的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>