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"
我正在寻找的是一种无需运行代码即可检测自动魔术的方法