相关疑难解决方法(0)

如何保存Python交互式会话?

我发现自己经常使用Python的解释器来处理数据库,文件等 - 基本上是大量的半结构化数据的手动格式化.我没有像我希望的那样经常保存和清理有用的位.有没有办法将我的输入保存到shell中(数据库连接,变量赋值,少量循环和逻辑位) - 交互式会话的一些历史记录?如果我使用像script我得到太多stdout噪音的东西.我真的不需要腌制所有对象 - 但如果有一个解决方案可以做到这一点,那就没关系.理想情况下,我只剩下一个脚本,它以我交互式创建的脚本运行,我可以删除我不需要的位.有没有这样做的包,或DIY方法?

更新:我对这些包的质量和实用性感到非常惊讶.对于那些有类似痒的人:

  • IPython - 应该已经使用了很多年了,我想到的是什么
  • 重新进行 - 非常令人印象深刻,我想了解更多有关可视化的知识,这似乎会在那里发光.一种gtk/gnome桌面应用程序,用于内嵌图形.想象一下混合壳+图形计算器+迷你蚀.来源分布在这里:http://www.reinteract.org/trac/wiki/GettingIt.在Ubuntu上运行良好,也集成到gnome桌面,Windows和Mac安装程序中.
  • bpython - 非常酷,很多不错的功能,自动完成(!),倒带,一键击保存到文件,缩进,做得好.Python源代码分发,从sourceforge中提取了几个依赖项.

我被转换了,这些真正填补了翻译和编辑之间的需要.

python shell read-eval-print-loop interactive-session

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

如何从脚本运行IPython魔术(或定时Python脚本)

IPython%timeit magic命令可以很好地测量运行某些Python代码所需的时间.现在,我想在Python脚本中使用类似的东西.我知道timeit模块,但它有几个缺点,例如,如何自适应地选择运行次数?即默认代码

import timeit
t=timeit.Timer("code(f)", "from __main__ import code,f")
t.timeit() 
Run Code Online (Sandbox Code Playgroud)

运行代码数百万次.%timeit IPyhton magic命令会自动执行此操作.我建议我可以使用MATLAB代码 http://www.mathworks.com/matlabcentral/fileexchange/18798

自动完成所有工作(并且还告诉函数的开销是否很大).

如何从Python脚本中调用%timeit magic(或者可能有更好的时序解决方案)?

python ipython

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

如何在Python中执行"如果从ipython运行"测试?

为了简化Ipython的调试,我在脚本的开头添加了以下内容

from IPython.Debugger import Tracer
debug = Tracer()
Run Code Online (Sandbox Code Playgroud)

但是,如果我从命令行启动我的脚本

$ python myscript.py
Run Code Online (Sandbox Code Playgroud)

我收到了与Ipython相关的错误.有没有办法做到以下几点

if run_from_ipython():
    from IPython.Debugger import Tracer
    debug = Tracer()
Run Code Online (Sandbox Code Playgroud)

这样我只需要在需要时导入Tracer()函数.

python ipython

28
推荐指数
2
解决办法
4942
查看次数

在IPython中保存工作区

是否可以保存IPython工作区(定义的函数,不同类型的变量等),以便以后加载它?

这与save.image()MATLAB或R中的功能类似.之前已经提出了类似的问题,例如:

像在MATLAB中一样在IPython中保存会话?

但是,几年过去了,我想知道现在是否有一个好的解决方案.

python ipython

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

如何通过日志记录恢复 iPython 0.13.2 会话

我最近更频繁地使用 iPython (0.13.2),并且日志记录似乎是一个很棒的功能——如果我能让它正常工作的话。

目前,我可以通过 %magic 命令启动并指定日志文件ipython --logfile ~/path/fake.log,甚至可以在 iPython 会话的中间使用 %magic 命令%logstart ~/path/fake.log

但是,我似乎无法从日志文件恢复会话,这似乎在一定程度上违背了目的。我已经搜索过 Google 和 SO,但是 SO 或文档中推荐的解决方案似乎都不能正常工作。

我努力了:

  • 来自重击
    • ipython -log ~/path/fake.log来源,结果[TerminalIPythonApp] Unrecognized flag: '-log':)
    • ipython -logplay ~/path/fake.log来源和许多其他人,结果[TerminalIPythonApp] Unrecognized flag: '-logplay':)
    • ipython --logfile=~/path/fake.log,结果:新日志开始,上一个会话的变量未定义)
  • 来自 iPython
    • %logstart ~/path/fake.log append,结果:旧日志继续但未加载,上一个会话中的变量未定义)

两个部分工作(因为它们尝试导入日志文件)但似乎不用于此目的是:

  • 来自bash:(ipython -i ~/path/fake.log结果:如果会话导入和工作中没有错误。如果有任何错误,则不会导入并且变量仍然不可用。日志记录不会恢复。)。
  • 来自 ipython:(%run ~/path/fake.log没有来源,只是猜测和尝试。结果:与上面相同。如果没有错误并且变量为 GTG,则运行文件。如果有错误,则不起作用。不恢复日志记录。)

iPython 0.13.2 中是否有任何方法可以有效地“从上次中断的地方开始”恢复会话?感谢您的任何帮助,您可以提供。

python logging ipython

5
推荐指数
1
解决办法
3260
查看次数

IPython:如何自动加载 npz 文件并为变量赋值?

我是 Python 新手,我热切地从 MATLAB 迁移到 IPython,作为我在实验室进行数据分析的首选语言。

在 MATLAB 中,经过一段数据处理后,我会这样做

>>> save('myresults.mat','x','y','z');
Run Code Online (Sandbox Code Playgroud)

并将变量 x、y 和 z 的结果保存在名为“myresults.mat”的文件中。后来我只能简单地说:

>>> load('myresults');
Run Code Online (Sandbox Code Playgroud)

MATLAB 将加载 .mat 文件并将存储的变量值分配给当前工作区。

我最近了解到我可以使用 numpy 对 IPython 执行类似的操作,即:

import numpy as np
a = 2
b = np.sqrt(2)
np.savez('myresultsinpython',a,b)
Run Code Online (Sandbox Code Playgroud)

然后做类似的事情

npzfile = np.load('myresultsinpython')
Run Code Online (Sandbox Code Playgroud)

但是,我得到的是一个对象,我可以通过以下方式访问我的变量:

npzfile['arr_1']
Run Code Online (Sandbox Code Playgroud)

等等,但我丢失了有关变量原始名称的所有信息。我知道我可以通过以下方式保存文件

np.savez('myresultsinpython',a=a,b=b)
Run Code Online (Sandbox Code Playgroud)

但这并不是那么有用,因为我仍然需要做类似的事情:

npzfile['a']
Run Code Online (Sandbox Code Playgroud)

访问变量的值。

如何加载文件并在工作区中创建变量并根据文件中存储的值分配它们的值?

诸如np.load('myresults')能够做a+b并获得3.4142135623730949 (=2+sqrt(2))回报的事情。

python load numpy save ipython

5
推荐指数
1
解决办法
4482
查看次数