Is there a way to make python become interactive in the middle of a script?

后端 未结 6 978
执笔经年
执笔经年 2021-02-01 07:03

I\'d like to do something like:

do lots of stuff to prepare a good environement
become_interactive
#wait for Ctrl-D
automatically clean up

Is i

相关标签:
6条回答
  • 2021-02-01 07:45

    The code module will allow you to start a Python REPL.

    0 讨论(0)
  • 2021-02-01 07:48

    With IPython v1.0, you can simply use

    from IPython import embed
    embed()
    

    with more options shown in the docs.

    0 讨论(0)
  • 2021-02-01 07:59

    Use the -i flag when you start Python and set an atexit handler to run when cleaning up.

    File script.py:

    import atexit
    def cleanup():
        print "Goodbye"
    atexit.register(cleanup)
    print "Hello"
    

    and then you just start Python with the -i flag:

    C:\temp>\python26\python -i script.py
    Hello
    >>> print "interactive"
    interactive
    >>> ^Z
    
    Goodbye
    
    0 讨论(0)
  • 2021-02-01 07:59

    Not exactly the thing you want but python -i will start interactive prompt after executing the script.

    -i : inspect interactively after running script, (also PYTHONINSPECT=x) and force prompts, even if stdin does not appear to be a terminal

    $ python -i your-script.py
    Python 2.5.4 (r254:67916, Jan 20 2010, 21:44:03) 
    ...
    >>> 
    
    0 讨论(0)
  • 2021-02-01 08:06

    To elaborate on IVA's answer: embedding-a-shell, incoporating code and Ipython.

    def prompt(vars=None, message="welcome to the shell" ):
        #prompt_message = "Welcome!  Useful: G is the graph, DB, C"
        prompt_message = message
        try:
            from IPython.Shell import IPShellEmbed
            ipshell = IPShellEmbed(argv=[''],banner=prompt_message,exit_msg="Goodbye")
            return  ipshell
        except ImportError:
            if vars is None:  vars=globals()
            import code
            import rlcompleter
            import readline
            readline.parse_and_bind("tab: complete")
            # calling this with globals ensures we can see the environment
            print prompt_message
            shell = code.InteractiveConsole(vars)
            return shell.interact
    
    p = prompt()
    p()
    
    0 讨论(0)
  • 2021-02-01 08:06

    You may call python itself:

    import subprocess
    
    print "Hola"
    
    subprocess.call(["python"],shell=True)
    
    print "Adios"
    
    0 讨论(0)
提交回复
热议问题