我想制作一个IPython笔记本,其中包含一些shell命令及其输入。在bash提示符中,我可以使用“here-document”语法:
bash-3.2$ mysql -u root <<END_IPUT
> use mydb;
> show tables;
> END_INPUT
我该如何在IPython中实现相同的效果,特别是在jupyter笔记本中?我知道如何将shell命令作为“行魔法”或“单元格魔法”在IPython中执行,例如:
In [7]: !! ls -tF
Out[7]: ['Demo-notebook.ipynb',
'createdb.sql',
...
我查看了IPython作为系统shell的文档,它展示了如何启用一些语法美化。在下面的代码中,我可以直接运行系统命令而不需要在前面加上!
或!!
。
# Turn everything in $PATH into an alias;
# then enable calling aliases without ! or %
%rehashx
%autocall 2
但是这些方法都无法在命令中提供输入:here-document语法在IPython中无效,会导致Python SyntaxError
。那么我该怎么做呢?
%%bash
开头,并在其余部分放置bash代码。 - Thomas K%%sx
,我认为它做的和你说的一样。但是%bash
的文档让我找到了%%script
,这正是我要找的。同时,我还发现了一个专门针对sql
的扩展,更好地解决了我的问题。但如果你想写一个扩展你建议的答案,我会接受它。 - alexis