如何重置IPython输入提示编号?(控制台,非笔记本电脑或qt)

如何重置IPython输入提示编号?(控制台,非笔记本电脑或qt),ipython,Ipython,以下是我当前的IPython命令提示符(常规终端IPython,而不是笔记本电脑或Qt): 我已经完成了我的工作流程,正在着手一项新任务。我想要一种重置IPython输入提示号的方法,如下所示: In [1]: 我理解这可能来自于我无法回答或回答的非重复问题: 为了进一步说明,下面是我所关注的命令的一个示例: In [99]: %reset_command_number In [1]: 2+2 Out[1]: 4 In [2]: %reset_command_number In [1]: 三

以下是我当前的IPython命令提示符(常规终端IPython,而不是笔记本电脑或Qt):

我已经完成了我的工作流程,正在着手一项新任务。我想要一种重置IPython输入提示号的方法,如下所示:

In [1]:
我理解这可能来自于我无法回答或回答的非重复问题:

为了进一步说明,下面是我所关注的命令的一个示例:

In [99]: %reset_command_number
In [1]: 2+2
Out[1]: 4
In [2]: %reset_command_number
In [1]:
三个神奇的问题

  • 这样的魔法(%reset\u command\u number)存在吗
  • 如果1的答案是肯定的,那它是什么黑魔法
  • 如果1的答案是否定的,那么这是否可以通过较低级别的IPython api实现?(是的,我已经搜索了api文档,没有,我还没有找到这样做的方法……)

  • 我不确定您是否可以,使用笔记本所做的工作(据我所知)相当于打开一个新的python会话,就像打开一个新选项卡,再次启动ipython,然后重新执行所有操作一样

    因此,如果我是你,必须开始一项新任务,并且想从[1]中的
    开始,我只需要启动一个新的ipython环境

    与ipython笔记本相同,启动新任务的方法是启动一个新笔记本

    我能想象为什么要这样做的唯一原因是,您希望访问前一个任务中的某个变量。 我要做的是使用pickle保存要重用的对象,或者将变量保存到文件中,然后在新的ipython会话中重新加载它

    你看过医生的照片了吗?你可能有其他问题的答案

    请注意,我知道这不是一个真正的答案,但它不仅仅是一个评论,无论如何,我希望这有帮助


    如果您有比重置提示号更具体的需求,只需详细说明即可。

    一种可能是修改以下命令的执行计数:

    • 使用带有
      的单行命令使重复调用此命令变得更容易(如果使用向上箭头滚动命令历史记录)
    • 这样做的副作用是,在第一个命令之后,您也会看到此错误。不过,我不知道它是否有副作用。(它已经说明历史记录已移动到另一个会话)
    演示 [1]中的
    :a=1
    [2]中:b=88
    In[3]:c=99
    在[4]中:导入IPython;IPython.get_IPython().execution_count=0
    在[1]中:a
    Out[1]:1
    错误!会话/行号在数据库中不唯一。历史记录移动到新会话20767
    在[2]中:
    Out[2]:88
    在[3]:c中
    Out[3]:99
    在[4]中:导入IPython;IPython.get_IPython().execution_count=0
    在[1]中:a=15
    错误!会话/行号在数据库中不唯一。历史记录移动到新会话20768
    在[2]中:a
    Out[2]:15
    在[3]中:
    Out[3]:88
    
    使用别名? 也可以为命令使用别名。例如,创建文件
    i_reset.py
    ,并将其放入
    站点包
    ~/.ipython/extensions/
    、您的
    PYTHONPATH
    或您可以在
    系统路径
    中看到的任何其他文件夹中

    #i_reset.py
    def i_重置(行):
    """
    将IPython外壳编号重置为[1]
    """
    进口IPython;IPython.get_IPython().execution_count=0
    def加载ipython扩展(ipython):
    “”“当扩展名为
    已加载。它接受IPython InteractiveShell
    例如,我们可以向
    `shell的register\u magic\u函数方法
    实例。”“”
    ipython.register\u magic\u函数(i\u reset,'line')
    
    然后,您可以先加载扩展名,然后像这样调用它:

    In [4]: %load_ext i_reset
    
    In [5]: i_reset
    
    In [1]: a
    Out[1]: 1
    

    假设您不需要会话数据,最简单的方法是退出并重新启动IPython

    $ ipython
    In [1]: 1+1
    Out[1]: 2
    
    In [2]: 2+2
    Out[2]: 4
    
    In [3]: 3+3
    Out[3]: 6
    
    In [4]: exit
    
    $ ipython
    In [1]: print("Prompt numbering reset")
    Prompt numbering reset
    
    In [2]: 
    
    ERROR! Session/line number was not unique in database. History logging moved to new session 20741
    
    In [4]: %load_ext i_reset
    
    In [5]: i_reset
    
    In [1]: a
    Out[1]: 1
    
    $ ipython
    In [1]: 1+1
    Out[1]: 2
    
    In [2]: 2+2
    Out[2]: 4
    
    In [3]: 3+3
    Out[3]: 6
    
    In [4]: exit
    
    $ ipython
    In [1]: print("Prompt numbering reset")
    Prompt numbering reset
    
    In [2]: