我想做类似以下的事情:
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) 有没有办法从一个%%bash
或其他%%script
单元格中访问当前python内核中的变量?
也许作为命令行参数或环境变量?
我重新打开笔记本时通常必须重新运行(大多数部分)笔记本,以便访问以前定义的变量并继续工作.
但是,有时我想跳过一些对后续细胞没有影响的细胞(例如,它们可能包含完成的分析分支)并且可能需要很长时间才能运行.这些细胞可以分散在整个笔记本中,因此像"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$'))
我想在我的ipython Notebook中运行一个bash脚本,并将输出保存为python变量中的字符串,以便进一步操作.基本上我想将bash魔法的输出传递给变量,例如输出如下:
%%bash
some_command [options] foo bar
Run Code Online (Sandbox Code Playgroud) 如果我有几个IPython笔记本在同一台服务器上运行.有没有办法在它们之间共享数据?例如,从另一个笔记本导入变量?谢谢!
如何使用iPython%time或%% timeit magic命令计时执行Python脚本?例如,我有script.py,我想知道执行需要多长时间.细微差别:script.py需要输入参数.以下似乎不起作用.
%%time script.py input_param1 input_param2
Run Code Online (Sandbox Code Playgroud) 在Linux终端中,当一个命令的输出太长而无法在一个页面中读取时,我可以这样做:
cat file | less
Run Code Online (Sandbox Code Playgroud)
这样我就可以读取并向上和向下滚动cat文件的输出.
我怎么能在IPython中做到这一点?
例如,我试过这个并没有用:
whos | less
Run Code Online (Sandbox Code Playgroud)
我最初的问题是,whos
通过Shift + Page Up来看,输出太多了,我不想更改滚动缓冲区.
是否可以在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没有任何黑客.你只需运行你想要的,关闭浏览器,它仍然运行.
我希望能够将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变量两次.
我正在为一个数据库课程写一个Jupyter笔记本; 大多数单元格将包含SQL代码,我使用IPython SQL魔术.目前我必须在每个单元格前加上%%sql
.有没有办法避免%%sql
在每个单元格之前键入,通过使其成为默认值?
我在如何为每个ipython笔记本电脑单元设置默认单元格魔术时发现了一个相关的问题 ?.但是,我找不到Jupyter的SQL内核.
ipython-magic ×10
ipython ×8
python ×7
background ×1
pager ×1
profiling ×1
python-2.7 ×1
scroll ×1
sql ×1