标签: ipython-magic

如何在IPython中将变量传递给magic'run'函数

我想做类似以下的事情:

In[1]: name = 'long_name_to_type_every_now_and_then.py'

In[2]: %run name
Run Code Online (Sandbox Code Playgroud)

但这实际上是试图运行'name.py',这不是我想要做的.

是否有将变量转换为字符串的一般方法?

类似于以下内容:

In[3]: %run %name%
Run Code Online (Sandbox Code Playgroud)

python ipython ipython-magic

72
推荐指数
2
解决办法
2万
查看次数

我可以在`%% bash`或`%% script` ipython笔记本单元格中访问python变量吗?

有没有办法从一个%%bash或其他%%script单元格中访问当前python内核中的变量?

也许作为命令行参数或环境变量?

ipython-notebook ipython-magic

50
推荐指数
6
解决办法
2万
查看次数

如何(间歇性地)在运行IPython笔记本时跳过某些单元格?

我重新打开笔记本时通常必须重新运行(大多数部分)笔记本,以便访问以前定义的变量并继续工作.

但是,有时我想跳过一些对后续细胞没有影响的细胞(例如,它们可能包含完成的分析分支)并且可能需要很长时间才能运行.这些细胞可以分散在整个笔记本中,因此像"Run All Below"这样的东西也无济于事.

有没有办法实现这个目标?

理想情况下,这些单元格可以使用一些特殊标记进行标记,以便它们可以手动"运行",但在"全部运行"时将被跳过.

编辑

%%cache (@ ipak扩展)@Jakob建议在某种程度上解决了这个问题.

实际上,我甚至不需要在重新运行时加载任何变量(对于后续单元格而言可能很大但不必要),只有存储的输出才能作为分析结果.

作为一种解决方案,放在%%cache folder/unique_identifier细胞的开头.代码将只执行一次,重新运行时不会加载任何变量,除非您删除unique_identifier文件.

不幸的是,当重新运行时,所有输出结果都会丢失%%cache.

编辑II(2013年10月14日)

ipython + ipycache的主版本现在也会修改(并重新显示)codecell输出.

对于丰富的显示输出,包括Latex,HTML(pandas DataFrame输出),请记住使用IPython的display()方法,例如, display(Latex(r'$\alpha_1$'))

python ipython ipython-notebook ipython-magic

33
推荐指数
4
解决办法
1万
查看次数

管道Ipython魔术输出到变量?

我想在我的ipython Notebook中运行一个bash脚本,并将输出保存为python变量中的字符串,以便进一步操作.基本上我想将bash魔法的输出传递给变量,例如输出如下:

%%bash
some_command [options] foo bar
Run Code Online (Sandbox Code Playgroud)

python ipython python-2.7 ipython-notebook ipython-magic

23
推荐指数
3
解决办法
7765
查看次数

在IPython笔记本之间共享数据

如果我有几个IPython笔记本在同一台服务器上运行.有没有办法在它们之间共享数据?例如,从另一个笔记本导入变量?谢谢!

python ipython ipython-notebook ipython-magic

23
推荐指数
4
解决办法
1万
查看次数

时间python脚本使用IPython魔术

如何使用iPython%time或%% timeit magic命令计时执行Python脚本?例如,我有script.py,我想知道执行需要多长时间.细微差别:script.py需要输入参数.以下似乎不起作用.

%%time script.py input_param1 input_param2
Run Code Online (Sandbox Code Playgroud)

python profiling ipython ipython-magic

17
推荐指数
1
解决办法
1万
查看次数

如何在IPython中使用管道

在Linux终端中,当一个命令的输出太长而无法在一个页面中读取时,我可以这样做:

cat file | less
Run Code Online (Sandbox Code Playgroud)

这样我就可以读取并向上和向下滚动cat文件的输出.

我怎么能在IPython中做到这一点?

例如,我试过这个并没有用:

whos | less
Run Code Online (Sandbox Code Playgroud)

我最初的问题是,whos通过Shift + Page Up来看,输出太多了,我不想更改滚动缓冲区.

python scroll ipython pager ipython-magic

16
推荐指数
1
解决办法
6639
查看次数

在分离模式下在IPython Notebook中运行一些任务

是否可以在IPython Notebook中运行一些长任务,关闭浏览器,然后在一段时间后再打开它并显示这些任务的结果?

说,这样的任务:

def f():
    import time
    time.sleep(100)
    with open("result.txt", "w") as fh:
        fh.write("Done.")
Run Code Online (Sandbox Code Playgroud)

如果我正常运行任务,并在完成之前关闭浏览器,当我打开它时,我看不到'result.txt'.

如果我使用%px魔术或并行执行来运行它- 如果我在完成之前关闭浏览器,则再没有结果.

有可用的任何扩展或黑客吗?或者我错过了什么?

更新1:

虽然在IPython中后台作业控制支持,但在我断开浏览器后,后台作业变得陈旧.我唯一能想到的就是%connect_info在关闭浏览器之前发出,然后使用连接从屏幕终端

ipython console --existing <ID>.json
Run Code Online (Sandbox Code Playgroud)

并从那里开始我的工作.

更新2:

更有帮助的黑客是组合ipython console和工作控制.即我在浏览器中启动后台作业时打开控制台并连接到同一会话,然后我可以自由关闭它直到作业完成.

更新3:

它似乎工作自版本iPython 1.0dev没有任何黑客.你只需运行你想要的,关闭浏览器,它仍然运行.

python background ipython ipython-notebook ipython-magic

16
推荐指数
1
解决办法
5215
查看次数

如何在iPython笔记本中保存单元格的输出?

我希望能够将iPython笔记本单元的TEXT输出保存到磁盘上的文件中.

我有2个额外的要求/要求:

  • 能够重新运行单元格并用最新的内容覆盖我的输出.
  • 还显示笔记本内的输出.

我已经想出如何使用%%capture魔法将iPython笔记本电脑的单元基本保存到一个文件中,但它看起来不够灵活:每次重新运行单元格时它都会不断添加,我无法在其中显示相同的细胞.

这是我到目前为止:

%%capture cap --no-stderr
print 'stuff'
with open('output.txt', 'w') as f:
    f.write(cap.stdout)

# clear the cap by deleting the variable here?
# del cap 
Run Code Online (Sandbox Code Playgroud)

当我尝试cap.show()写入后,它似乎没有显示.相反,它将输出放入cap变量两次.

ipython ipython-notebook ipython-magic

16
推荐指数
1
解决办法
2万
查看次数

选择SQL作为Jupyter Notebook的默认单元格魔术

我正在为一个数据库课程写一个Jupyter笔记本; 大多数单元格将包含SQL代码,我使用IPython SQL魔术.目前我必须在每个单元格前加上%%sql.有没有办法避免%%sql在每个单元格之前键入,通过使其成为默认值?

我在如何为每个ipython笔记本电脑单元设置默认单元格魔术时发现了一个相关的问题 .但是,我找不到Jupyter的SQL内核.

sql ipython-notebook ipython-magic jupyter-notebook

12
推荐指数
1
解决办法
3789
查看次数